diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 80f3fca..0000000 --- a/.editorconfig +++ /dev/null @@ -1,189 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# EditorConfig configuration file (see ). - -# Indicate that this file is a root-level configuration file: -root = true - -# Set properties for all files: -[*] -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true - -# Set properties for JavaScript files: -[*.{js,js.txt}] -indent_style = tab - -# Set properties for JavaScript ES module files: -[*.{mjs,mjs.txt}] -indent_style = tab - -# Set properties for JavaScript CommonJS files: -[*.{cjs,cjs.txt}] -indent_style = tab - -# Set properties for JSON files: -[*.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `cli_opts.json` files: -[cli_opts.json] -indent_style = tab - -# Set properties for TypeScript files: -[*.ts] -indent_style = tab - -# Set properties for Python files: -[*.{py,py.txt}] -indent_style = space -indent_size = 4 - -# Set properties for Julia files: -[*.{jl,jl.txt}] -indent_style = tab - -# Set properties for R files: -[*.{R,R.txt}] -indent_style = tab - -# Set properties for C files: -[*.{c,c.txt}] -indent_style = tab - -# Set properties for C header files: -[*.{h,h.txt}] -indent_style = tab - -# Set properties for C++ files: -[*.{cpp,cpp.txt}] -indent_style = tab - -# Set properties for C++ header files: -[*.{hpp,hpp.txt}] -indent_style = tab - -# Set properties for Fortran files: -[*.{f,f.txt}] -indent_style = space -indent_size = 2 - -# Set properties for shell files: -[*.{sh,sh.txt}] -indent_style = tab - -# Set properties for AWK files: -[*.{awk,awk.txt}] -indent_style = tab - -# Set properties for HTML files: -[*.{html,html.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for XML files: -[*.{xml,xml.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for CSS files: -[*.{css,css.txt}] -indent_style = tab - -# Set properties for Makefiles: -[Makefile] -indent_style = tab - -[*.{mk,mk.txt}] -indent_style = tab - -# Set properties for Markdown files: -[*.{md,md.txt}] -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true # Note: this disables using two spaces to force a hard line break, which is permitted in Markdown. As we don't typically follow that practice (TMK), we should be safe to automatically trim. - -# Set properties for `usage.txt` files: -[usage.txt] -indent_style = space -indent_size = 2 - -# Set properties for `repl.txt` files: -[repl.txt] -indent_style = space -indent_size = 4 - -# Set properties for `package.json` files: -[package.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `datapackage.json` files: -[datapackage.json] -indent_style = space -indent_size = 2 - -# Set properties for `manifest.json` files: -[manifest.json] -indent_style = space -indent_size = 2 - -# Set properties for `tsconfig.json` files: -[tsconfig.json] -indent_style = space -indent_size = 2 - -# Set properties for LaTeX files: -[*.{tex,tex.txt}] -indent_style = tab - -# Set properties for LaTeX Bibliography files: -[*.{bib,bib.txt}] -indent_style = tab - -# Set properties for YAML files: -[*.{yml,yml.txt}] -indent_style = space -indent_size = 2 - -# Ignore generated lock files for GitHub Agentic Workflows: -[*.lock.yml] -charset = unset -end_of_line = unset -indent_style = unset -indent_size = unset -trim_trailing_whitespace = unset -insert_final_newline = unset - -# Set properties for GYP files: -[binding.gyp] -indent_style = space -indent_size = 2 - -[*.gypi] -indent_style = space -indent_size = 2 - -# Set properties for citation files: -[*.{cff,cff.txt}] -indent_style = space -indent_size = 2 diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 5f30286..0000000 --- a/.eslintrc.js +++ /dev/null @@ -1 +0,0 @@ -/* For the `eslint` rules of this project, consult the main repository at https://github.com/stdlib-js/stdlib */ diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 24b327f..0000000 --- a/.gitattributes +++ /dev/null @@ -1,68 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Configuration file which assigns attributes to pathnames. -# -# [1]: https://git-scm.com/docs/gitattributes - -# Automatically normalize the line endings of any committed text files: -* text=auto - -# Override line endings for certain files on checkout: -*.crlf.csv text eol=crlf - -# Denote that certain files are binary and should not be modified: -*.png binary -*.jpg binary -*.jpeg binary -*.gif binary -*.ico binary -*.gz binary -*.zip binary -*.7z binary -*.mp3 binary -*.mp4 binary -*.mov binary - -# Override what is considered "vendored" by GitHub's linguist: -/lib/node_modules/** -linguist-vendored -linguist-generated - -# Configure directories which should *not* be included in GitHub language statistics: -/deps/** linguist-vendored -/dist/** linguist-generated -/workshops/** linguist-vendored - -benchmark/** linguist-vendored -docs/* linguist-documentation -etc/** linguist-vendored -examples/** linguist-documentation -scripts/** linguist-vendored -test/** linguist-vendored -tools/** linguist-vendored - -# Configure files which should *not* be included in GitHub language statistics: -Makefile linguist-vendored -*.mk linguist-vendored -*.jl linguist-vendored -*.py linguist-vendored -*.R linguist-vendored - -# Configure files which should be included in GitHub language statistics: -docs/types/*.d.ts -linguist-documentation - -.github/workflows/*.lock.yml linguist-generated=true merge=ours diff --git a/.github/.keepalive b/.github/.keepalive deleted file mode 100644 index 890f35d..0000000 --- a/.github/.keepalive +++ /dev/null @@ -1 +0,0 @@ -2026-08-17T03:10:03.271Z diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index c2795a1..0000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,7 +0,0 @@ - - -We are excited about your pull request, but unfortunately we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/ndarray/base/includes) of the main repository where we’ll review and provide feedback. - -If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. You may also consult the [development guide](https://github.com/stdlib-js/stdlib/blob/develop/docs/contributing/development.md) for help on developing stdlib. - -We look forward to receiving your contribution! :smiley: \ No newline at end of file diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml deleted file mode 100644 index e4f10fe..0000000 --- a/.github/workflows/benchmark.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: benchmark - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run benchmarks: - benchmark: - - # Define a display name: - name: 'Run benchmarks' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run benchmarks: - - name: 'Run benchmarks' - run: | - npm run benchmark diff --git a/.github/workflows/cancel.yml b/.github/workflows/cancel.yml deleted file mode 100644 index b5291db..0000000 --- a/.github/workflows/cancel.yml +++ /dev/null @@ -1,57 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: cancel - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to cancel existing workflow runs: - cancel: - - # Define a display name: - name: 'Cancel workflow runs' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Time limit: - timeout-minutes: 3 - - # Define the sequence of job steps... - steps: - - # Cancel existing workflow runs: - - name: 'Cancel existing workflow runs' - # Pin action to full length commit SHA - uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # v0.12.1 - with: - workflow_id: >- - benchmark.yml, - examples.yml, - test.yml, - test_coverage.yml, - test_install.yml, - publish.yml - access_token: ${{ github.token }} diff --git a/.github/workflows/close_pull_requests.yml b/.github/workflows/close_pull_requests.yml deleted file mode 100644 index 2fd8b41..0000000 --- a/.github/workflows/close_pull_requests.yml +++ /dev/null @@ -1,54 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: close_pull_requests - -# Workflow triggers: -on: - pull_request_target: - types: [opened] - -# Workflow jobs: -jobs: - - # Define job to close all pull requests: - run: - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Close pull request - - name: 'Close pull request' - # Pin action to full length commit SHA corresponding to v3.1.2 - uses: superbrothers/close-pull-request@9c18513d320d7b2c7185fb93396d0c664d5d8448 - with: - comment: | - Thank you for submitting a pull request. :raised_hands: - - We greatly appreciate your willingness to submit a contribution. However, we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). - - We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/ndarray/base/includes) of the main repository where we’ll review and provide feedback. If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. - - Thank you again, and we look forward to receiving your contribution! :smiley: - - Best, - The stdlib team \ No newline at end of file diff --git a/.github/workflows/examples.yml b/.github/workflows/examples.yml deleted file mode 100644 index 2984901..0000000 --- a/.github/workflows/examples.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: examples - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run the package examples... - examples: - - # Define display name: - name: 'Run examples' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Checkout repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run examples: - - name: 'Run examples' - run: | - npm run examples diff --git a/.github/workflows/npm_downloads.yml b/.github/workflows/npm_downloads.yml deleted file mode 100644 index 503c136..0000000 --- a/.github/workflows/npm_downloads.yml +++ /dev/null @@ -1,112 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: npm_downloads - -# Workflow triggers: -on: - # Run this workflow weekly: - schedule: - # cron: ' ' - - cron: '21 21 * * 0' - - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job for retrieving npm download counts... - npm_downloads: - - # Define display name: - name: 'Retrieve npm download counts' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - timeout-minutes: 10 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Resolve package name: - - name: 'Resolve package name' - id: package_name - run: | - name=`node -e 'console.log(require("./package.json").name)' | tr -d '\n'` - echo "package_name=$name" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Fetch download data: - - name: 'Fetch data' - id: download_data - run: | - url="https://api.npmjs.org/downloads/range/$(date --date='1 year ago' '+%Y-%m-%d'):$(date '+%Y-%m-%d')/${{ steps.package_name.outputs.package_name }}" - echo "$url" - data=$(curl "$url") - mkdir ./tmp - echo "$data" > ./tmp/npm_downloads.json - echo "data=$data" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Print summary of download data: - - name: 'Print summary' - run: | - echo "| Date | Downloads |" >> $GITHUB_STEP_SUMMARY - echo "|------|------------|" >> $GITHUB_STEP_SUMMARY - cat ./tmp/npm_downloads.json | jq -r ".downloads | .[-14:] | to_entries | map(\"| \(.value.day) | \(.value.downloads) |\") |.[]" >> $GITHUB_STEP_SUMMARY - - # Upload the download data: - - name: 'Upload data' - # Pin action to full length commit SHA - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 - with: - # Define a name for the uploaded artifact (ensuring a unique name for each job): - name: npm_downloads - - # Specify the path to the file to upload: - path: ./tmp/npm_downloads.json - - # Specify the number of days to retain the artifact (default is 90 days): - retention-days: 90 - timeout-minutes: 10 - if: success() - - # Send data to events server: - - name: 'Post data' - # Pin action to full length commit SHA - uses: distributhor/workflow-webhook@48a40b380ce4593b6a6676528cd005986ae56629 # v3.0.3 - env: - webhook_url: ${{ secrets.STDLIB_NPM_DOWNLOADS_URL }} - webhook_secret: ${{ secrets.STDLIB_WEBHOOK_SECRET }} - data: '{ "downloads": ${{ steps.download_data.outputs.data }} }' - timeout-minutes: 5 - if: success() diff --git a/.github/workflows/productionize.yml b/.github/workflows/productionize.yml deleted file mode 100644 index 83d50c4..0000000 --- a/.github/workflows/productionize.yml +++ /dev/null @@ -1,821 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: productionize - -# Workflow triggers: -on: - # Run workflow when a new commit is pushed to the main branch: - push: - branches: - - main - - # Allow the workflow to be manually run: - workflow_dispatch: - inputs: - require-passing-tests: - description: 'Require passing tests for creating bundles' - type: boolean - default: true - - # Run workflow upon completion of `publish` workflow run: - workflow_run: - workflows: ["publish"] - types: [completed] - - -# Concurrency group to prevent multiple concurrent executions: -concurrency: - group: productionize - cancel-in-progress: true - -# Workflow jobs: -jobs: - - # Define a job to create a production build... - productionize: - - # Define display name: - name: 'Productionize' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - # Checkout main branch of repository: - - name: 'Checkout main branch' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - ref: main - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Create production branch: - - name: 'Create production branch' - run: | - git checkout -b production - - # Transform error messages: - - name: 'Transform error messages' - id: transform-error-messages - uses: stdlib-js/transform-errors-action@main - - # Change `@stdlib/string-format` to `@stdlib/error-tools-fmtprodmsg` in package.json if the former is a dependency, otherwise insert it as a dependency: - - name: 'Update dependencies in package.json' - run: | - PKG_VERSION=$(npm view @stdlib/error-tools-fmtprodmsg version) - if grep -q '"@stdlib/string-format"' package.json; then - sed -i "s/\"@stdlib\/string-format\": \"^.*\"/\"@stdlib\/error-tools-fmtprodmsg\": \"^$PKG_VERSION\"/g" package.json - else - node -e "var pkg = require( './package.json' ); pkg.dependencies[ '@stdlib/error-tools-fmtprodmsg' ] = '^$PKG_VERSION'; require( 'fs' ).writeFileSync( 'package.json', JSON.stringify( pkg, null, 2 ) );" - fi - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Transform error messages" - - # Push changes: - - name: 'Push changes' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" production --force - - # Define a job for running tests of the productionized code... - test: - - # Define a display name: - name: 'Run Tests' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Indicate that this job depends on the prior job finishing: - needs: productionize - - # Run this job regardless of the outcome of the prior job: - if: always() - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - # Use the `production` branch: - ref: production - - # Install Node.js: - - name: 'Install Node.js' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Build native add-on if present: - - name: 'Build native add-on (if present)' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - run: | - if [ -f "binding.gyp" ]; then - npm install node-gyp --no-save && ./node_modules/.bin/node-gyp rebuild - fi - - # Run tests: - - name: 'Run tests' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: tests - run: | - npm test || npm test || npm test - - # Define job to create a bundle for use in Deno... - deno: - - # Define display name: - name: 'Create Deno bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `deno` branch exists: - - name: 'Check if remote `deno` branch exists' - id: deno-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin deno - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `deno` exists, delete everything in branch and merge `production` into it - - name: 'If `deno` exists, delete everything in branch and merge `production` into it' - if: steps.deno-branch-exists.outputs.remote-exists - run: | - git checkout -b deno origin/deno - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `deno` does not exist, create `deno` branch: - - name: 'If `deno` does not exist, create `deno` branch' - if: ${{ steps.deno-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b deno - - # Copy files to deno directory: - - name: 'Copy files to deno directory' - run: | - mkdir -p deno - cp README.md LICENSE CONTRIBUTORS NOTICE ./deno - - # Copy TypeScript definitions to deno directory: - if [ -d index.d.ts ]; then - cp index.d.ts ./deno/index.d.ts - fi - if [ -e ./docs/types/index.d.ts ]; then - cp ./docs/types/index.d.ts ./deno/mod.d.ts - fi - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: Install production and development dependencies - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Bundle package for use in Deno: - - name: 'Bundle package for Deno' - id: deno-bundle - uses: stdlib-js/bundle-action@main - with: - target: 'deno' - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - # Replace links to other packages with links to the deno branch: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/deno/"; - - # Replace reference to `@stdlib/types` with CDN link: - find ./deno -type f -name '*.ts' -print0 | xargs -0 -r sed -Ei "s/\/\/\/ /\/\/\/ /g" - - # Change wording of project description to avoid reference to JavaScript and Node.js: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "s/a standard library for JavaScript and Node.js, /a standard library /g" - - # Rewrite all `require()`s to use jsDelivr links: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/require\( '@stdlib\// { - s/(var|let|const)\s+([a-z0-9_]+)\s+=\s*require\( '([^']+)' \);/import \2 from \'\3\';/i - s/@stdlib/https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js/ - s/';/@deno\/mod.js';/ - }" - - # Rewrite first `import` to show importing of named exports if available: - exports=$(cat lib/index.js | \ - grep -E 'setReadOnly\(.*,.*,.*\)' | \ - sed -E 's/setReadOnly\((.*),(.*),(.*)\);/\2/' | \ - sed -E "s/'//g" | \ - sort) - if [ -n "$exports" ]; then - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\nimport\s+([a-zA-Z0-9_]+)\s+from\s*'([^']+)';\n\`\`\`/\`\`\`javascript\nimport \1 from '\2';\n\`\`\`\n\nYou can also import the following named exports from the package:\n\n\`\`\`javascript\nimport { $(echo $exports | sed -E 's/ /, /g') } from '\2';\n\`\`\`/" - fi - - # Remove `installation`, `cli`, and `c` sections: - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Create package.json file for deno branch: - jq --indent 2 '{"name": .name, "version": .version, "description": .description, "license": .license, "type": "module", "main": "./mod.js", "homepage": .homepage, "repository": .repository, "bugs": .bugs, "keywords": .keywords, "funding": .funding}' package.json > ./deno/package.json - - # Delete everything in current directory aside from deno folder: - - name: 'Delete everything in current directory aside from deno folder' - run: | - find . -type 'f' | grep -v -e "deno" -e ".git/" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e "deno" -e ".git" | xargs -r rm -rf - - # Move deno directory to root: - - name: 'Move deno directory to root' - run: | - mv ./deno/* . - rmdir ./deno - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Auto-generated commit" - - # Push changes to `deno` branch: - - name: 'Push changes to `deno` branch' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" deno - - # Send notification to Zulip if job fails: - - name: 'Send notification to Zulip in case of failure' - # Pin action to full length commit SHA - uses: zulip/github-actions-zulip/send-message@e4c8f27c732ba9bd98ac6be0583096dea82feea5 # v1.0.2 - if: failure() - with: - api-key: ${{ secrets.ZULIP_API_KEY }} - email: 'github-actions-bot@stdlib.zulipchat.com' - organization-url: 'https://stdlib.zulipchat.com' - to: 'workflows-standalone' - type: 'stream' - topic: ${{ github.event.repository.name }} - content: | - :cross_mark: **${{ github.workflow }}** workflow failed - - **Repository:** [${{ github.repository }}](${{ github.server_url }}/${{ github.repository }}) - **Run:** [View workflow run](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}) - - # Define job to create a UMD bundle... - umd: - - # Define display name: - name: 'Create UMD bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `umd` branch exists: - - name: 'Check if remote `umd` branch exists' - id: umd-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin umd - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `umd` exists, delete everything in branch and merge `production` into it - - name: 'If `umd` exists, delete everything in branch and merge `production` into it' - if: steps.umd-branch-exists.outputs.remote-exists - run: | - git checkout -b umd origin/umd - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `umd` does not exist, create `umd` branch: - - name: 'If `umd` does not exist, create `umd` branch' - if: ${{ steps.umd-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b umd - - # Copy files to umd directory: - - name: 'Copy files to umd directory' - run: | - mkdir -p umd - cp README.md LICENSE CONTRIBUTORS NOTICE ./umd - - # Install Node.js - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Extract alias: - - name: 'Extract alias' - id: extract-alias - run: | - alias=$(grep -E 'require\(' README.md | head -n 1 | sed -E 's/^var ([a-zA-Z0-9_]+) = .+/\1/') - echo "alias=${alias}" >> $GITHUB_OUTPUT - - # Create Universal Module Definition (UMD) Node.js bundle: - - name: 'Create Universal Module Definition (UMD) Node.js bundle' - id: umd-bundle-node - uses: stdlib-js/bundle-action@main - with: - target: 'umd-node' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Create Universal Module Definition (UMD) browser bundle: - - name: 'Create Universal Module Definition (UMD) browser bundle' - id: umd-bundle-browser - uses: stdlib-js/bundle-action@main - with: - target: 'umd-browser' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - - # Replace links to other packages with links to the umd branch: - find ./umd -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/umd/"; - - # Remove `installation`, `cli`, and `c` sections: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Rewrite first `require()` to show consumption of the UMD bundle in Observable and via a `script` tag: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\n(var|let|const)\s+([a-zA-Z0-9_]+)\s+=\s*require\( '\@stdlib\/([^']+)' \);\n\`\`\`/To use in Observable,\n\n\`\`\`javascript\n\2 = require\( 'https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js\/\3\@umd\/browser.js' \)\n\`\`\`\n\nTo vendor stdlib functionality and avoid installing dependency trees for Node.js, you can use the UMD server build:\n\n\`\`\`javascript\nvar \2 = require\( 'path\/to\/vendor\/umd\/\3\/index.js' \)\n\`\`\`\n\nTo include the bundle in a webpage,\n\n\`\`\`html\n + + ```
@@ -185,111 +176,7 @@ console.log( out ); -* * * - -
- -## C APIs - - - -
- -Character codes for data types: - - - - - -- **x**: `bool` (boolean). -- **z**: `complex128` (double-precision floating-point complex number). -- **c**: `complex64` (single-precision floating-point complex number). -- **f**: `float32` (single-precision floating-point number). -- **d**: `float64` (double-precision floating-point number). -- **k**: `int16` (signed 16-bit integer). -- **i**: `int32` (signed 32-bit integer). -- **s**: `int8` (signed 8-bit integer). -- **t**: `uint16` (unsigned 16-bit integer). -- **u**: `uint32` (unsigned 32-bit integer). -- **b**: `uint8` (unsigned 8-bit integer). - - - -Function name suffix naming convention: - -```text -stdlib_ndarray_includes__[_as__] -``` - -For example, - - - -```c -void stdlib_ndarray_includes_dd_x(...) {...} -``` - -is a function which accepts one double-precision floating-point input ndarray, a double-precision floating-point search element ndarray, and one boolean output ndarray. - -TODO: document casting convention - -
- - - - - -
- -### Usage - -```c -#include "stdlib/ndarray/base/includes.h" -``` - - - - - - - - - - - - - -
- - - - - -
- -
- - - - - -* * * - -
- -### Examples - -```c -// TODO -``` - -
- - - -
- @@ -306,7 +193,7 @@ TODO: document casting convention ## Notice -This package is part of [stdlib][stdlib], a standard library for JavaScript and Node.js, with an emphasis on numerical and scientific computing. The library provides a collection of robust, high performance libraries for mathematics, statistics, streams, utilities, and more. +This package is part of [stdlib][stdlib], a standard library with an emphasis on numerical and scientific computing. The library provides a collection of robust, high performance libraries for mathematics, statistics, streams, utilities, and more. For more information on the project, filing bug reports and feature requests, and guidance on how to develop [stdlib][stdlib], see the main project [repository][stdlib]. diff --git a/SECURITY.md b/SECURITY.md deleted file mode 100644 index 9702d4c..0000000 --- a/SECURITY.md +++ /dev/null @@ -1,5 +0,0 @@ -# Security - -> Policy for reporting security vulnerabilities. - -See the security policy [in the main project repository](https://github.com/stdlib-js/stdlib/security). diff --git a/benchmark/benchmark.10d_blocked_columnmajor.js b/benchmark/benchmark.10d_blocked_columnmajor.js deleted file mode 100644 index 66380bd..0000000 --- a/benchmark/benchmark.10d_blocked_columnmajor.js +++ /dev/null @@ -1,134 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var isBoolean = require( '@stdlib/assert-is-boolean' ).isPrimitive; -var pow = require( '@stdlib/math-base-special-pow' ); -var floor = require( '@stdlib/math-base-special-floor' ); -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var format = require( '@stdlib/string-format' ); -var pkg = require( './../package.json' ).name; -var includes = require( './../lib/10d_blocked.js' ); - - -// VARIABLES // - -var types = [ 'float64' ]; -var order = 'column-major'; - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - ndarray length -* @param {NonNegativeIntegerArray} shape - ndarray shape -* @param {string} xtype - ndarray data type -* @returns {Function} benchmark function -*/ -function createBenchmark( len, shape, xtype ) { - var x; - - x = discreteUniform( len, 1, 100 ); - x = { - 'dtype': xtype, - 'data': x, - 'shape': shape, - 'strides': shape2strides( shape, order ), - 'offset': 0, - 'order': order - }; - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = includes( x, 101 ); - if ( typeof out !== 'boolean' ) { - b.fail( 'should return a boolean' ); - } - } - b.toc(); - if ( !isBoolean( out ) ) { - b.fail( 'should return a boolean' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var sh; - var t1; - var f; - var i; - var j; - - min = 1; // 10^min - max = 6; // 10^max - - for ( j = 0; j < types.length; j++ ) { - t1 = types[ j ]; - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - sh = [ len/2, 2, 1, 1, 1, 1, 1, 1, 1, 1 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - sh = [ 1, 1, 1, 1, 1, 1, 1, 1, 2, len/2 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - len = floor( pow( len, 1.0/10.0 ) ); - sh = [ len, len, len, len, len, len, len, len, len, len ]; - len *= pow( len, 9 ); - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - } - } -} - -main(); diff --git a/benchmark/benchmark.10d_blocked_rowmajor.js b/benchmark/benchmark.10d_blocked_rowmajor.js deleted file mode 100644 index d085c7d..0000000 --- a/benchmark/benchmark.10d_blocked_rowmajor.js +++ /dev/null @@ -1,134 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var isBoolean = require( '@stdlib/assert-is-boolean' ).isPrimitive; -var pow = require( '@stdlib/math-base-special-pow' ); -var floor = require( '@stdlib/math-base-special-floor' ); -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var format = require( '@stdlib/string-format' ); -var pkg = require( './../package.json' ).name; -var includes = require( './../lib/10d_blocked.js' ); - - -// VARIABLES // - -var types = [ 'float64' ]; -var order = 'row-major'; - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - ndarray length -* @param {NonNegativeIntegerArray} shape - ndarray shape -* @param {string} xtype - ndarray data type -* @returns {Function} benchmark function -*/ -function createBenchmark( len, shape, xtype ) { - var x; - - x = discreteUniform( len, 1, 100 ); - x = { - 'dtype': xtype, - 'data': x, - 'shape': shape, - 'strides': shape2strides( shape, order ), - 'offset': 0, - 'order': order - }; - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = includes( x, 101 ); - if ( typeof out !== 'boolean' ) { - b.fail( 'should return a boolean' ); - } - } - b.toc(); - if ( !isBoolean( out ) ) { - b.fail( 'should return a boolean' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var sh; - var t1; - var f; - var i; - var j; - - min = 1; // 10^min - max = 6; // 10^max - - for ( j = 0; j < types.length; j++ ) { - t1 = types[ j ]; - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - sh = [ len/2, 2, 1, 1, 1, 1, 1, 1, 1, 1 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - sh = [ 1, 1, 1, 1, 1, 1, 1, 1, 2, len/2 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - len = floor( pow( len, 1.0/10.0 ) ); - sh = [ len, len, len, len, len, len, len, len, len, len ]; - len *= pow( len, 9 ); - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - } - } -} - -main(); diff --git a/benchmark/benchmark.10d_columnmajor.js b/benchmark/benchmark.10d_columnmajor.js deleted file mode 100644 index 2e89e90..0000000 --- a/benchmark/benchmark.10d_columnmajor.js +++ /dev/null @@ -1,134 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var isBoolean = require( '@stdlib/assert-is-boolean' ).isPrimitive; -var pow = require( '@stdlib/math-base-special-pow' ); -var floor = require( '@stdlib/math-base-special-floor' ); -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var format = require( '@stdlib/string-format' ); -var pkg = require( './../package.json' ).name; -var includes = require( './../lib/10d.js' ); - - -// VARIABLES // - -var types = [ 'float64' ]; -var order = 'column-major'; - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - ndarray length -* @param {NonNegativeIntegerArray} shape - ndarray shape -* @param {string} xtype - ndarray data type -* @returns {Function} benchmark function -*/ -function createBenchmark( len, shape, xtype ) { - var x; - - x = discreteUniform( len, 1, 100 ); - x = { - 'dtype': xtype, - 'data': x, - 'shape': shape, - 'strides': shape2strides( shape, order ), - 'offset': 0, - 'order': order - }; - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = includes( x, 101 ); - if ( typeof out !== 'boolean' ) { - b.fail( 'should return a boolean' ); - } - } - b.toc(); - if ( !isBoolean( out ) ) { - b.fail( 'should return a boolean' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var sh; - var t1; - var f; - var i; - var j; - - min = 1; // 10^min - max = 6; // 10^max - - for ( j = 0; j < types.length; j++ ) { - t1 = types[ j ]; - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - sh = [ len/2, 2, 1, 1, 1, 1, 1, 1, 1, 1 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - sh = [ 1, 1, 1, 1, 1, 1, 1, 1, 2, len/2 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - len = floor( pow( len, 1.0/10.0 ) ); - sh = [ len, len, len, len, len, len, len, len, len, len ]; - len *= pow( len, 9 ); - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - } - } -} - -main(); diff --git a/benchmark/benchmark.10d_rowmajor.js b/benchmark/benchmark.10d_rowmajor.js deleted file mode 100644 index 776cf7d..0000000 --- a/benchmark/benchmark.10d_rowmajor.js +++ /dev/null @@ -1,134 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var isBoolean = require( '@stdlib/assert-is-boolean' ).isPrimitive; -var pow = require( '@stdlib/math-base-special-pow' ); -var floor = require( '@stdlib/math-base-special-floor' ); -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var format = require( '@stdlib/string-format' ); -var pkg = require( './../package.json' ).name; -var includes = require( './../lib/10d.js' ); - - -// VARIABLES // - -var types = [ 'float64' ]; -var order = 'row-major'; - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - ndarray length -* @param {NonNegativeIntegerArray} shape - ndarray shape -* @param {string} xtype - ndarray data type -* @returns {Function} benchmark function -*/ -function createBenchmark( len, shape, xtype ) { - var x; - - x = discreteUniform( len, 1, 100 ); - x = { - 'dtype': xtype, - 'data': x, - 'shape': shape, - 'strides': shape2strides( shape, order ), - 'offset': 0, - 'order': order - }; - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = includes( x, 101 ); - if ( typeof out !== 'boolean' ) { - b.fail( 'should return a boolean' ); - } - } - b.toc(); - if ( !isBoolean( out ) ) { - b.fail( 'should return a boolean' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var sh; - var t1; - var f; - var i; - var j; - - min = 1; // 10^min - max = 6; // 10^max - - for ( j = 0; j < types.length; j++ ) { - t1 = types[ j ]; - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - sh = [ len/2, 2, 1, 1, 1, 1, 1, 1, 1, 1 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - sh = [ 1, 1, 1, 1, 1, 1, 1, 1, 2, len/2 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - len = floor( pow( len, 1.0/10.0 ) ); - sh = [ len, len, len, len, len, len, len, len, len, len ]; - len *= pow( len, 9 ); - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - } - } -} - -main(); diff --git a/benchmark/benchmark.11d_columnmajor.js b/benchmark/benchmark.11d_columnmajor.js deleted file mode 100644 index 45a9f3d..0000000 --- a/benchmark/benchmark.11d_columnmajor.js +++ /dev/null @@ -1,134 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var isBoolean = require( '@stdlib/assert-is-boolean' ).isPrimitive; -var pow = require( '@stdlib/math-base-special-pow' ); -var floor = require( '@stdlib/math-base-special-floor' ); -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var format = require( '@stdlib/string-format' ); -var pkg = require( './../package.json' ).name; -var includes = require( './../lib/nd.js' ); - - -// VARIABLES // - -var types = [ 'float64' ]; -var order = 'column-major'; - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - ndarray length -* @param {NonNegativeIntegerArray} shape - ndarray shape -* @param {string} xtype - ndarray data type -* @returns {Function} benchmark function -*/ -function createBenchmark( len, shape, xtype ) { - var x; - - x = discreteUniform( len, 1, 100 ); - x = { - 'dtype': xtype, - 'data': x, - 'shape': shape, - 'strides': shape2strides( shape, order ), - 'offset': 0, - 'order': order - }; - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = includes( x, 101 ); - if ( typeof out !== 'boolean' ) { - b.fail( 'should return a boolean' ); - } - } - b.toc(); - if ( !isBoolean( out ) ) { - b.fail( 'should return a boolean' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var sh; - var t1; - var f; - var i; - var j; - - min = 1; // 10^min - max = 6; // 10^max - - for ( j = 0; j < types.length; j++ ) { - t1 = types[ j ]; - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - sh = [ len/2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - sh = [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, len/2 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - len = floor( pow( len, 1.0/11.0 ) ); - sh = [ len, len, len, len, len, len, len, len, len, len, len ]; - len *= pow( len, 10 ); - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - } - } -} - -main(); diff --git a/benchmark/benchmark.11d_rowmajor.js b/benchmark/benchmark.11d_rowmajor.js deleted file mode 100644 index 5e9dc2c..0000000 --- a/benchmark/benchmark.11d_rowmajor.js +++ /dev/null @@ -1,134 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var isBoolean = require( '@stdlib/assert-is-boolean' ).isPrimitive; -var pow = require( '@stdlib/math-base-special-pow' ); -var floor = require( '@stdlib/math-base-special-floor' ); -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var format = require( '@stdlib/string-format' ); -var pkg = require( './../package.json' ).name; -var includes = require( './../lib/nd.js' ); - - -// VARIABLES // - -var types = [ 'float64' ]; -var order = 'row-major'; - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - ndarray length -* @param {NonNegativeIntegerArray} shape - ndarray shape -* @param {string} xtype - ndarray data type -* @returns {Function} benchmark function -*/ -function createBenchmark( len, shape, xtype ) { - var x; - - x = discreteUniform( len, 1, 100 ); - x = { - 'dtype': xtype, - 'data': x, - 'shape': shape, - 'strides': shape2strides( shape, order ), - 'offset': 0, - 'order': order - }; - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = includes( x, 101 ); - if ( typeof out !== 'boolean' ) { - b.fail( 'should return a boolean' ); - } - } - b.toc(); - if ( !isBoolean( out ) ) { - b.fail( 'should return a boolean' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var sh; - var t1; - var f; - var i; - var j; - - min = 1; // 10^min - max = 6; // 10^max - - for ( j = 0; j < types.length; j++ ) { - t1 = types[ j ]; - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - sh = [ len/2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - sh = [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, len/2 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - len = floor( pow( len, 1.0/11.0 ) ); - sh = [ len, len, len, len, len, len, len, len, len, len, len ]; - len *= pow( len, 10 ); - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - } - } -} - -main(); diff --git a/benchmark/benchmark.1d_columnmajor.js b/benchmark/benchmark.1d_columnmajor.js deleted file mode 100644 index 37dcc2b..0000000 --- a/benchmark/benchmark.1d_columnmajor.js +++ /dev/null @@ -1,132 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var isBoolean = require( '@stdlib/assert-is-boolean' ).isPrimitive; -var pow = require( '@stdlib/math-base-special-pow' ); -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var format = require( '@stdlib/string-format' ); -var pkg = require( './../package.json' ).name; -var includes = require( './../lib' ); - - -// VARIABLES // - -var types = [ 'float64' ]; -var order = 'column-major'; - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - ndarray length -* @param {NonNegativeIntegerArray} shape - ndarray shape -* @param {string} xtype - ndarray data type -* @returns {Function} benchmark function -*/ -function createBenchmark( len, shape, xtype ) { - var x; - var v; - - x = discreteUniform( len, 1, 100 ); - x = { - 'dtype': xtype, - 'data': x, - 'shape': shape, - 'strides': shape2strides( shape, order ), - 'offset': 0, - 'order': order - }; - v = { - 'dtype': xtype, - 'data': discreteUniform( 1, 101, 1000 ), - 'shape': [], - 'strides': [ 0 ], - 'offset': 0, - 'order': order - }; - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = includes( [ x, v ] ); - if ( typeof out !== 'boolean' ) { - b.fail( 'should return a boolean' ); - } - } - b.toc(); - if ( !isBoolean( out ) ) { - b.fail( 'should return a boolean' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var sh; - var t1; - var f; - var i; - var j; - - min = 1; // 10^min - max = 6; // 10^max - - for ( j = 0; j < types.length; j++ ) { - t1 = types[ j ]; - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - sh = [ len ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - } - } -} - -main(); diff --git a/benchmark/benchmark.1d_rowmajor.js b/benchmark/benchmark.1d_rowmajor.js deleted file mode 100644 index 3427b49..0000000 --- a/benchmark/benchmark.1d_rowmajor.js +++ /dev/null @@ -1,132 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var isBoolean = require( '@stdlib/assert-is-boolean' ).isPrimitive; -var pow = require( '@stdlib/math-base-special-pow' ); -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var format = require( '@stdlib/string-format' ); -var pkg = require( './../package.json' ).name; -var includes = require( './../lib' ); - - -// VARIABLES // - -var types = [ 'float64' ]; -var order = 'row-major'; - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - ndarray length -* @param {NonNegativeIntegerArray} shape - ndarray shape -* @param {string} xtype - ndarray data type -* @returns {Function} benchmark function -*/ -function createBenchmark( len, shape, xtype ) { - var x; - var v; - - x = discreteUniform( len, 1, 100 ); - x = { - 'dtype': xtype, - 'data': x, - 'shape': shape, - 'strides': shape2strides( shape, order ), - 'offset': 0, - 'order': order - }; - v = { - 'dtype': xtype, - 'data': discreteUniform( 1, 101, 1000 ), - 'shape': [], - 'strides': [ 0 ], - 'offset': 0, - 'order': order - }; - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = includes( [ x, v ] ); - if ( typeof out !== 'boolean' ) { - b.fail( 'should return a boolean' ); - } - } - b.toc(); - if ( !isBoolean( out ) ) { - b.fail( 'should return a boolean' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var sh; - var t1; - var f; - var i; - var j; - - min = 1; // 10^min - max = 6; // 10^max - - for ( j = 0; j < types.length; j++ ) { - t1 = types[ j ]; - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - sh = [ len ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - } - } -} - -main(); diff --git a/benchmark/benchmark.2d_blocked_columnmajor.js b/benchmark/benchmark.2d_blocked_columnmajor.js deleted file mode 100644 index 0af2356..0000000 --- a/benchmark/benchmark.2d_blocked_columnmajor.js +++ /dev/null @@ -1,135 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var isBoolean = require( '@stdlib/assert-is-boolean' ).isPrimitive; -var pow = require( '@stdlib/math-base-special-pow' ); -var sqrt = require( '@stdlib/math-base-special-sqrt' ); -var floor = require( '@stdlib/math-base-special-floor' ); -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var format = require( '@stdlib/string-format' ); -var pkg = require( './../package.json' ).name; -var includes = require( './../lib/2d_blocked.js' ); - - -// VARIABLES // - -var types = [ 'float64' ]; -var order = 'column-major'; - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - ndarray length -* @param {NonNegativeIntegerArray} shape - ndarray shape -* @param {string} xtype - ndarray data type -* @returns {Function} benchmark function -*/ -function createBenchmark( len, shape, xtype ) { - var x; - - x = discreteUniform( len, 1, 100 ); - x = { - 'dtype': xtype, - 'data': x, - 'shape': shape, - 'strides': shape2strides( shape, order ), - 'offset': 0, - 'order': order - }; - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = includes( x, 101 ); - if ( typeof out !== 'boolean' ) { - b.fail( 'should return a boolean' ); - } - } - b.toc(); - if ( !isBoolean( out ) ) { - b.fail( 'should return a boolean' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var sh; - var t1; - var f; - var i; - var j; - - min = 1; // 10^min - max = 6; // 10^max - - for ( j = 0; j < types.length; j++ ) { - t1 = types[ j ]; - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - sh = [ len/2, 2 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - sh = [ 2, len/2 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - len = floor( sqrt( len ) ); - sh = [ len, len ]; - len *= len; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - } - } -} - -main(); diff --git a/benchmark/benchmark.2d_blocked_rowmajor.js b/benchmark/benchmark.2d_blocked_rowmajor.js deleted file mode 100644 index 68537fd..0000000 --- a/benchmark/benchmark.2d_blocked_rowmajor.js +++ /dev/null @@ -1,135 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var isBoolean = require( '@stdlib/assert-is-boolean' ).isPrimitive; -var pow = require( '@stdlib/math-base-special-pow' ); -var sqrt = require( '@stdlib/math-base-special-sqrt' ); -var floor = require( '@stdlib/math-base-special-floor' ); -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var format = require( '@stdlib/string-format' ); -var pkg = require( './../package.json' ).name; -var includes = require( './../lib/2d_blocked.js' ); - - -// VARIABLES // - -var types = [ 'float64' ]; -var order = 'row-major'; - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - ndarray length -* @param {NonNegativeIntegerArray} shape - ndarray shape -* @param {string} xtype - ndarray data type -* @returns {Function} benchmark function -*/ -function createBenchmark( len, shape, xtype ) { - var x; - - x = discreteUniform( len, 1, 100 ); - x = { - 'dtype': xtype, - 'data': x, - 'shape': shape, - 'strides': shape2strides( shape, order ), - 'offset': 0, - 'order': order - }; - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = includes( x, 101 ); - if ( typeof out !== 'boolean' ) { - b.fail( 'should return a boolean' ); - } - } - b.toc(); - if ( !isBoolean( out ) ) { - b.fail( 'should return a boolean' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var sh; - var t1; - var f; - var i; - var j; - - min = 1; // 10^min - max = 6; // 10^max - - for ( j = 0; j < types.length; j++ ) { - t1 = types[ j ]; - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - sh = [ len/2, 2 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - sh = [ 2, len/2 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - len = floor( sqrt( len ) ); - sh = [ len, len ]; - len *= len; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - } - } -} - -main(); diff --git a/benchmark/benchmark.2d_columnmajor.js b/benchmark/benchmark.2d_columnmajor.js deleted file mode 100644 index dad78d3..0000000 --- a/benchmark/benchmark.2d_columnmajor.js +++ /dev/null @@ -1,135 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var isBoolean = require( '@stdlib/assert-is-boolean' ).isPrimitive; -var pow = require( '@stdlib/math-base-special-pow' ); -var sqrt = require( '@stdlib/math-base-special-sqrt' ); -var floor = require( '@stdlib/math-base-special-floor' ); -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var format = require( '@stdlib/string-format' ); -var pkg = require( './../package.json' ).name; -var includes = require( './../lib/2d.js' ); - - -// VARIABLES // - -var types = [ 'float64' ]; -var order = 'column-major'; - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - ndarray length -* @param {NonNegativeIntegerArray} shape - ndarray shape -* @param {string} xtype - ndarray data type -* @returns {Function} benchmark function -*/ -function createBenchmark( len, shape, xtype ) { - var x; - - x = discreteUniform( len, 1, 100 ); - x = { - 'dtype': xtype, - 'data': x, - 'shape': shape, - 'strides': shape2strides( shape, order ), - 'offset': 0, - 'order': order - }; - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = includes( x, 101 ); - if ( typeof out !== 'boolean' ) { - b.fail( 'should return a boolean' ); - } - } - b.toc(); - if ( !isBoolean( out ) ) { - b.fail( 'should return a boolean' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var sh; - var t1; - var f; - var i; - var j; - - min = 1; // 10^min - max = 6; // 10^max - - for ( j = 0; j < types.length; j++ ) { - t1 = types[ j ]; - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - sh = [ len/2, 2 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - sh = [ 2, len/2 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - len = floor( sqrt( len ) ); - sh = [ len, len ]; - len *= len; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - } - } -} - -main(); diff --git a/benchmark/benchmark.2d_rowmajor.js b/benchmark/benchmark.2d_rowmajor.js deleted file mode 100644 index 45f314b..0000000 --- a/benchmark/benchmark.2d_rowmajor.js +++ /dev/null @@ -1,135 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var isBoolean = require( '@stdlib/assert-is-boolean' ).isPrimitive; -var pow = require( '@stdlib/math-base-special-pow' ); -var sqrt = require( '@stdlib/math-base-special-sqrt' ); -var floor = require( '@stdlib/math-base-special-floor' ); -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var format = require( '@stdlib/string-format' ); -var pkg = require( './../package.json' ).name; -var includes = require( './../lib/2d.js' ); - - -// VARIABLES // - -var types = [ 'float64' ]; -var order = 'row-major'; - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - ndarray length -* @param {NonNegativeIntegerArray} shape - ndarray shape -* @param {string} xtype - ndarray data type -* @returns {Function} benchmark function -*/ -function createBenchmark( len, shape, xtype ) { - var x; - - x = discreteUniform( len, 1, 100 ); - x = { - 'dtype': xtype, - 'data': x, - 'shape': shape, - 'strides': shape2strides( shape, order ), - 'offset': 0, - 'order': order - }; - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = includes( x, 101 ); - if ( typeof out !== 'boolean' ) { - b.fail( 'should return a boolean' ); - } - } - b.toc(); - if ( !isBoolean( out ) ) { - b.fail( 'should return a boolean' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var sh; - var t1; - var f; - var i; - var j; - - min = 1; // 10^min - max = 6; // 10^max - - for ( j = 0; j < types.length; j++ ) { - t1 = types[ j ]; - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - sh = [ len/2, 2 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - sh = [ 2, len/2 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - len = floor( sqrt( len ) ); - sh = [ len, len ]; - len *= len; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - } - } -} - -main(); diff --git a/benchmark/benchmark.2d_rowmajor_accessors.js b/benchmark/benchmark.2d_rowmajor_accessors.js deleted file mode 100644 index 175e5be..0000000 --- a/benchmark/benchmark.2d_rowmajor_accessors.js +++ /dev/null @@ -1,161 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var isBoolean = require( '@stdlib/assert-is-boolean' ).isPrimitive; -var pow = require( '@stdlib/math-base-special-pow' ); -var sqrt = require( '@stdlib/math-base-special-sqrt' ); -var floor = require( '@stdlib/math-base-special-floor' ); -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var format = require( '@stdlib/string-format' ); -var pkg = require( './../package.json' ).name; -var includes = require( './../lib/2d_accessors.js' ); - - -// VARIABLES // - -var types = [ 'float64' ]; -var order = 'row-major'; - - -// FUNCTIONS // - -/** -* Returns an array data buffer element. -* -* @private -* @param {Collection} buf - data buffer -* @param {NonNegativeInteger} idx - element index -* @returns {*} element -*/ -function get( buf, idx ) { - return buf[ idx ]; -} - -/** -* Sets an array data buffer element. -* -* @private -* @param {Collection} buf - data buffer -* @param {NonNegativeInteger} idx - element index -* @param {*} value - value to set -*/ -function set( buf, idx, value ) { - buf[ idx ] = value; -} - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - ndarray length -* @param {NonNegativeIntegerArray} shape - ndarray shape -* @param {string} xtype - ndarray data type -* @returns {Function} benchmark function -*/ -function createBenchmark( len, shape, xtype ) { - var x; - - x = discreteUniform( len, 1, 100 ); - x = { - 'dtype': xtype, - 'data': x, - 'shape': shape, - 'strides': shape2strides( shape, order ), - 'offset': 0, - 'order': order, - 'accessorProtocol': true, - 'accessors': [ get, set ] - }; - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = includes( x, 101 ); - if ( typeof out !== 'boolean' ) { - b.fail( 'should return a boolean' ); - } - } - b.toc(); - if ( !isBoolean( out ) ) { - b.fail( 'should return a boolean' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var sh; - var t1; - var f; - var i; - var j; - - min = 1; // 10^min - max = 6; // 10^max - - for ( j = 0; j < types.length; j++ ) { - t1 = types[ j ]; - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - sh = [ len/2, 2 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::accessors:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - sh = [ 2, len/2 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::accessors:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - len = floor( sqrt( len ) ); - sh = [ len, len ]; - len *= len; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::accessors:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - } - } -} - -main(); diff --git a/benchmark/benchmark.2d_rowmajor_accessors_complex.js b/benchmark/benchmark.2d_rowmajor_accessors_complex.js deleted file mode 100644 index 732699f..0000000 --- a/benchmark/benchmark.2d_rowmajor_accessors_complex.js +++ /dev/null @@ -1,168 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var isBoolean = require( '@stdlib/assert-is-boolean' ).isPrimitive; -var pow = require( '@stdlib/math-base-special-pow' ); -var sqrt = require( '@stdlib/math-base-special-sqrt' ); -var floor = require( '@stdlib/math-base-special-floor' ); -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var ctors = require( '@stdlib/array-typed-complex-ctors' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var format = require( '@stdlib/string-format' ); -var pkg = require( './../package.json' ).name; -var includes = require( './../lib/2d_accessors.js' ); - - -// VARIABLES // - -var types = [ 'complex64' ]; -var order = 'row-major'; - - -// FUNCTIONS // - -/** -* Returns an array data buffer element. -* -* @private -* @param {Collection} buf - data buffer -* @param {NonNegativeInteger} idx - element index -* @returns {*} element -*/ -function get( buf, idx ) { - return buf.get( idx ); -} - -/** -* Sets an array data buffer element. -* -* @private -* @param {Collection} buf - data buffer -* @param {NonNegativeInteger} idx - element index -* @param {*} value - value to set -*/ -function set( buf, idx, value ) { - buf.set( value, idx ); -} - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - ndarray length -* @param {NonNegativeIntegerArray} shape - ndarray shape -* @param {string} xtype - ndarray data type -* @returns {Function} benchmark function -*/ -function createBenchmark( len, shape, xtype ) { - var xbuf; - var x; - var v; - - xbuf = discreteUniform( len*2, 1, 100 ); - x = { - 'dtype': xtype, - 'data': new ( ctors( xtype ) )( xbuf.buffer ), - 'shape': shape, - 'strides': shape2strides( shape, order ), - 'offset': 0, - 'order': order, - 'accessorProtocol': true, - 'accessors': [ get, set ] - }; - v = { - 're': 101, - 'im': 102 - }; - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = includes( x, v ); - if ( typeof out !== 'boolean' ) { - b.fail( 'should return a boolean' ); - } - } - b.toc(); - if ( !isBoolean( out ) ) { - b.fail( 'should return a boolean' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var sh; - var t1; - var f; - var i; - var j; - - min = 1; // 10^min - max = 5; // 10^max - - for ( j = 0; j < types.length; j++ ) { - t1 = types[ j ]; - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - sh = [ len/2, 2 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::accessors:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - sh = [ 2, len/2 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::accessors:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - len = floor( sqrt( len ) ); - sh = [ len, len ]; - len *= len; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::accessors:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - } - } -} - -main(); diff --git a/benchmark/benchmark.3d_blocked_columnmajor.js b/benchmark/benchmark.3d_blocked_columnmajor.js deleted file mode 100644 index 1fc1c2c..0000000 --- a/benchmark/benchmark.3d_blocked_columnmajor.js +++ /dev/null @@ -1,135 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var isBoolean = require( '@stdlib/assert-is-boolean' ).isPrimitive; -var pow = require( '@stdlib/math-base-special-pow' ); -var cbrt = require( '@stdlib/math-base-special-cbrt' ); -var floor = require( '@stdlib/math-base-special-floor' ); -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var format = require( '@stdlib/string-format' ); -var pkg = require( './../package.json' ).name; -var includes = require( './../lib/3d_blocked.js' ); - - -// VARIABLES // - -var types = [ 'float64' ]; -var order = 'column-major'; - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - ndarray length -* @param {NonNegativeIntegerArray} shape - ndarray shape -* @param {string} xtype - ndarray data type -* @returns {Function} benchmark function -*/ -function createBenchmark( len, shape, xtype ) { - var x; - - x = discreteUniform( len, 1, 100 ); - x = { - 'dtype': xtype, - 'data': x, - 'shape': shape, - 'strides': shape2strides( shape, order ), - 'offset': 0, - 'order': order - }; - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = includes( x, 101 ); - if ( typeof out !== 'boolean' ) { - b.fail( 'should return a boolean' ); - } - } - b.toc(); - if ( !isBoolean( out ) ) { - b.fail( 'should return a boolean' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var sh; - var t1; - var f; - var i; - var j; - - min = 1; // 10^min - max = 6; // 10^max - - for ( j = 0; j < types.length; j++ ) { - t1 = types[ j ]; - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - sh = [ len/2, 2, 1 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - sh = [ 1, 2, len/2 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - len = floor( cbrt( len ) ); - sh = [ len, len, len ]; - len *= len * len; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - } - } -} - -main(); diff --git a/benchmark/benchmark.3d_blocked_rowmajor.js b/benchmark/benchmark.3d_blocked_rowmajor.js deleted file mode 100644 index fe92f4e..0000000 --- a/benchmark/benchmark.3d_blocked_rowmajor.js +++ /dev/null @@ -1,135 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var isBoolean = require( '@stdlib/assert-is-boolean' ).isPrimitive; -var pow = require( '@stdlib/math-base-special-pow' ); -var cbrt = require( '@stdlib/math-base-special-cbrt' ); -var floor = require( '@stdlib/math-base-special-floor' ); -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var format = require( '@stdlib/string-format' ); -var pkg = require( './../package.json' ).name; -var includes = require( './../lib/3d_blocked.js' ); - - -// VARIABLES // - -var types = [ 'float64' ]; -var order = 'row-major'; - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - ndarray length -* @param {NonNegativeIntegerArray} shape - ndarray shape -* @param {string} xtype - ndarray data type -* @returns {Function} benchmark function -*/ -function createBenchmark( len, shape, xtype ) { - var x; - - x = discreteUniform( len, 1, 100 ); - x = { - 'dtype': xtype, - 'data': x, - 'shape': shape, - 'strides': shape2strides( shape, order ), - 'offset': 0, - 'order': order - }; - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = includes( x, 101 ); - if ( typeof out !== 'boolean' ) { - b.fail( 'should return a boolean' ); - } - } - b.toc(); - if ( !isBoolean( out ) ) { - b.fail( 'should return a boolean' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var sh; - var t1; - var f; - var i; - var j; - - min = 1; // 10^min - max = 6; // 10^max - - for ( j = 0; j < types.length; j++ ) { - t1 = types[ j ]; - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - sh = [ len/2, 2, 1 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - sh = [ 1, 2, len/2 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - len = floor( cbrt( len ) ); - sh = [ len, len, len ]; - len *= len * len; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - } - } -} - -main(); diff --git a/benchmark/benchmark.3d_columnmajor.js b/benchmark/benchmark.3d_columnmajor.js deleted file mode 100644 index 536a359..0000000 --- a/benchmark/benchmark.3d_columnmajor.js +++ /dev/null @@ -1,135 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var isBoolean = require( '@stdlib/assert-is-boolean' ).isPrimitive; -var pow = require( '@stdlib/math-base-special-pow' ); -var cbrt = require( '@stdlib/math-base-special-cbrt' ); -var floor = require( '@stdlib/math-base-special-floor' ); -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var format = require( '@stdlib/string-format' ); -var pkg = require( './../package.json' ).name; -var includes = require( './../lib/3d.js' ); - - -// VARIABLES // - -var types = [ 'float64' ]; -var order = 'column-major'; - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - ndarray length -* @param {NonNegativeIntegerArray} shape - ndarray shape -* @param {string} xtype - ndarray data type -* @returns {Function} benchmark function -*/ -function createBenchmark( len, shape, xtype ) { - var x; - - x = discreteUniform( len, 1, 100 ); - x = { - 'dtype': xtype, - 'data': x, - 'shape': shape, - 'strides': shape2strides( shape, order ), - 'offset': 0, - 'order': order - }; - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = includes( x, 101 ); - if ( typeof out !== 'boolean' ) { - b.fail( 'should return a boolean' ); - } - } - b.toc(); - if ( !isBoolean( out ) ) { - b.fail( 'should return a boolean' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var sh; - var t1; - var f; - var i; - var j; - - min = 1; // 10^min - max = 6; // 10^max - - for ( j = 0; j < types.length; j++ ) { - t1 = types[ j ]; - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - sh = [ len/2, 2, 1 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - sh = [ 1, 2, len/2 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - len = floor( cbrt( len ) ); - sh = [ len, len, len ]; - len *= len * len; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - } - } -} - -main(); diff --git a/benchmark/benchmark.3d_rowmajor.js b/benchmark/benchmark.3d_rowmajor.js deleted file mode 100644 index 82e1abb..0000000 --- a/benchmark/benchmark.3d_rowmajor.js +++ /dev/null @@ -1,135 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var isBoolean = require( '@stdlib/assert-is-boolean' ).isPrimitive; -var pow = require( '@stdlib/math-base-special-pow' ); -var cbrt = require( '@stdlib/math-base-special-cbrt' ); -var floor = require( '@stdlib/math-base-special-floor' ); -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var format = require( '@stdlib/string-format' ); -var pkg = require( './../package.json' ).name; -var includes = require( './../lib/3d.js' ); - - -// VARIABLES // - -var types = [ 'float64' ]; -var order = 'row-major'; - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - ndarray length -* @param {NonNegativeIntegerArray} shape - ndarray shape -* @param {string} xtype - ndarray data type -* @returns {Function} benchmark function -*/ -function createBenchmark( len, shape, xtype ) { - var x; - - x = discreteUniform( len, 1, 100 ); - x = { - 'dtype': xtype, - 'data': x, - 'shape': shape, - 'strides': shape2strides( shape, order ), - 'offset': 0, - 'order': order - }; - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = includes( x, 101 ); - if ( typeof out !== 'boolean' ) { - b.fail( 'should return a boolean' ); - } - } - b.toc(); - if ( !isBoolean( out ) ) { - b.fail( 'should return a boolean' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var sh; - var t1; - var f; - var i; - var j; - - min = 1; // 10^min - max = 6; // 10^max - - for ( j = 0; j < types.length; j++ ) { - t1 = types[ j ]; - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - sh = [ len/2, 2, 1 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - sh = [ 1, 2, len/2 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - len = floor( cbrt( len ) ); - sh = [ len, len, len ]; - len *= len * len; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - } - } -} - -main(); diff --git a/benchmark/benchmark.4d_blocked_columnmajor.js b/benchmark/benchmark.4d_blocked_columnmajor.js deleted file mode 100644 index 70b3190..0000000 --- a/benchmark/benchmark.4d_blocked_columnmajor.js +++ /dev/null @@ -1,134 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var isBoolean = require( '@stdlib/assert-is-boolean' ).isPrimitive; -var pow = require( '@stdlib/math-base-special-pow' ); -var floor = require( '@stdlib/math-base-special-floor' ); -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var format = require( '@stdlib/string-format' ); -var pkg = require( './../package.json' ).name; -var includes = require( './../lib/4d_blocked.js' ); - - -// VARIABLES // - -var types = [ 'float64' ]; -var order = 'column-major'; - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - ndarray length -* @param {NonNegativeIntegerArray} shape - ndarray shape -* @param {string} xtype - ndarray data type -* @returns {Function} benchmark function -*/ -function createBenchmark( len, shape, xtype ) { - var x; - - x = discreteUniform( len, 1, 100 ); - x = { - 'dtype': xtype, - 'data': x, - 'shape': shape, - 'strides': shape2strides( shape, order ), - 'offset': 0, - 'order': order - }; - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = includes( x, 101 ); - if ( typeof out !== 'boolean' ) { - b.fail( 'should return a boolean' ); - } - } - b.toc(); - if ( !isBoolean( out ) ) { - b.fail( 'should return a boolean' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var sh; - var t1; - var f; - var i; - var j; - - min = 1; // 10^min - max = 6; // 10^max - - for ( j = 0; j < types.length; j++ ) { - t1 = types[ j ]; - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - sh = [ len/2, 2, 1, 1 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - sh = [ 1, 1, 2, len/2 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - len = floor( pow( len, 1.0/4.0 ) ); - sh = [ len, len, len, len ]; - len *= len * len * len; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - } - } -} - -main(); diff --git a/benchmark/benchmark.4d_blocked_rowmajor.js b/benchmark/benchmark.4d_blocked_rowmajor.js deleted file mode 100644 index 41317aa..0000000 --- a/benchmark/benchmark.4d_blocked_rowmajor.js +++ /dev/null @@ -1,134 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var isBoolean = require( '@stdlib/assert-is-boolean' ).isPrimitive; -var pow = require( '@stdlib/math-base-special-pow' ); -var floor = require( '@stdlib/math-base-special-floor' ); -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var format = require( '@stdlib/string-format' ); -var pkg = require( './../package.json' ).name; -var includes = require( './../lib/4d_blocked.js' ); - - -// VARIABLES // - -var types = [ 'float64' ]; -var order = 'row-major'; - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - ndarray length -* @param {NonNegativeIntegerArray} shape - ndarray shape -* @param {string} xtype - ndarray data type -* @returns {Function} benchmark function -*/ -function createBenchmark( len, shape, xtype ) { - var x; - - x = discreteUniform( len, 1, 100 ); - x = { - 'dtype': xtype, - 'data': x, - 'shape': shape, - 'strides': shape2strides( shape, order ), - 'offset': 0, - 'order': order - }; - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = includes( x, 101 ); - if ( typeof out !== 'boolean' ) { - b.fail( 'should return a boolean' ); - } - } - b.toc(); - if ( !isBoolean( out ) ) { - b.fail( 'should return a boolean' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var sh; - var t1; - var f; - var i; - var j; - - min = 1; // 10^min - max = 6; // 10^max - - for ( j = 0; j < types.length; j++ ) { - t1 = types[ j ]; - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - sh = [ len/2, 2, 1, 1 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - sh = [ 1, 1, 2, len/2 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - len = floor( pow( len, 1.0/4.0 ) ); - sh = [ len, len, len, len ]; - len *= len * len * len; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - } - } -} - -main(); diff --git a/benchmark/benchmark.4d_columnmajor.js b/benchmark/benchmark.4d_columnmajor.js deleted file mode 100644 index 56d97a9..0000000 --- a/benchmark/benchmark.4d_columnmajor.js +++ /dev/null @@ -1,134 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var isBoolean = require( '@stdlib/assert-is-boolean' ).isPrimitive; -var pow = require( '@stdlib/math-base-special-pow' ); -var floor = require( '@stdlib/math-base-special-floor' ); -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var format = require( '@stdlib/string-format' ); -var pkg = require( './../package.json' ).name; -var includes = require( './../lib/4d.js' ); - - -// VARIABLES // - -var types = [ 'float64' ]; -var order = 'column-major'; - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - ndarray length -* @param {NonNegativeIntegerArray} shape - ndarray shape -* @param {string} xtype - ndarray data type -* @returns {Function} benchmark function -*/ -function createBenchmark( len, shape, xtype ) { - var x; - - x = discreteUniform( len, 1, 100 ); - x = { - 'dtype': xtype, - 'data': x, - 'shape': shape, - 'strides': shape2strides( shape, order ), - 'offset': 0, - 'order': order - }; - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = includes( x, 101 ); - if ( typeof out !== 'boolean' ) { - b.fail( 'should return a boolean' ); - } - } - b.toc(); - if ( !isBoolean( out ) ) { - b.fail( 'should return a boolean' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var sh; - var t1; - var f; - var i; - var j; - - min = 1; // 10^min - max = 6; // 10^max - - for ( j = 0; j < types.length; j++ ) { - t1 = types[ j ]; - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - sh = [ len/2, 2, 1, 1 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - sh = [ 1, 1, 2, len/2 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - len = floor( pow( len, 1.0/4.0 ) ); - sh = [ len, len, len, len ]; - len *= len * len * len; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - } - } -} - -main(); diff --git a/benchmark/benchmark.4d_rowmajor.js b/benchmark/benchmark.4d_rowmajor.js deleted file mode 100644 index b9711d4..0000000 --- a/benchmark/benchmark.4d_rowmajor.js +++ /dev/null @@ -1,134 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var isBoolean = require( '@stdlib/assert-is-boolean' ).isPrimitive; -var pow = require( '@stdlib/math-base-special-pow' ); -var floor = require( '@stdlib/math-base-special-floor' ); -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var format = require( '@stdlib/string-format' ); -var pkg = require( './../package.json' ).name; -var includes = require( './../lib/4d.js' ); - - -// VARIABLES // - -var types = [ 'float64' ]; -var order = 'row-major'; - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - ndarray length -* @param {NonNegativeIntegerArray} shape - ndarray shape -* @param {string} xtype - ndarray data type -* @returns {Function} benchmark function -*/ -function createBenchmark( len, shape, xtype ) { - var x; - - x = discreteUniform( len, 1, 100 ); - x = { - 'dtype': xtype, - 'data': x, - 'shape': shape, - 'strides': shape2strides( shape, order ), - 'offset': 0, - 'order': order - }; - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = includes( x, 101 ); - if ( typeof out !== 'boolean' ) { - b.fail( 'should return a boolean' ); - } - } - b.toc(); - if ( !isBoolean( out ) ) { - b.fail( 'should return a boolean' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var sh; - var t1; - var f; - var i; - var j; - - min = 1; // 10^min - max = 6; // 10^max - - for ( j = 0; j < types.length; j++ ) { - t1 = types[ j ]; - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - sh = [ len/2, 2, 1, 1 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - sh = [ 1, 1, 2, len/2 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - len = floor( pow( len, 1.0/4.0 ) ); - sh = [ len, len, len, len ]; - len *= len * len * len; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - } - } -} - -main(); diff --git a/benchmark/benchmark.5d_blocked_columnmajor.js b/benchmark/benchmark.5d_blocked_columnmajor.js deleted file mode 100644 index 0232235..0000000 --- a/benchmark/benchmark.5d_blocked_columnmajor.js +++ /dev/null @@ -1,134 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var isBoolean = require( '@stdlib/assert-is-boolean' ).isPrimitive; -var pow = require( '@stdlib/math-base-special-pow' ); -var floor = require( '@stdlib/math-base-special-floor' ); -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var format = require( '@stdlib/string-format' ); -var pkg = require( './../package.json' ).name; -var includes = require( './../lib/5d_blocked.js' ); - - -// VARIABLES // - -var types = [ 'float64' ]; -var order = 'column-major'; - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - ndarray length -* @param {NonNegativeIntegerArray} shape - ndarray shape -* @param {string} xtype - ndarray data type -* @returns {Function} benchmark function -*/ -function createBenchmark( len, shape, xtype ) { - var x; - - x = discreteUniform( len, 1, 100 ); - x = { - 'dtype': xtype, - 'data': x, - 'shape': shape, - 'strides': shape2strides( shape, order ), - 'offset': 0, - 'order': order - }; - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = includes( x, 101 ); - if ( typeof out !== 'boolean' ) { - b.fail( 'should return a boolean' ); - } - } - b.toc(); - if ( !isBoolean( out ) ) { - b.fail( 'should return a boolean' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var sh; - var t1; - var f; - var i; - var j; - - min = 1; // 10^min - max = 6; // 10^max - - for ( j = 0; j < types.length; j++ ) { - t1 = types[ j ]; - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - sh = [ len/2, 2, 1, 1, 1 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - sh = [ 1, 1, 1, 2, len/2 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - len = floor( pow( len, 1.0/5.0 ) ); - sh = [ len, len, len, len, len ]; - len *= pow( len, 4 ); - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - } - } -} - -main(); diff --git a/benchmark/benchmark.5d_blocked_rowmajor.js b/benchmark/benchmark.5d_blocked_rowmajor.js deleted file mode 100644 index 238cff6..0000000 --- a/benchmark/benchmark.5d_blocked_rowmajor.js +++ /dev/null @@ -1,134 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var isBoolean = require( '@stdlib/assert-is-boolean' ).isPrimitive; -var pow = require( '@stdlib/math-base-special-pow' ); -var floor = require( '@stdlib/math-base-special-floor' ); -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var format = require( '@stdlib/string-format' ); -var pkg = require( './../package.json' ).name; -var includes = require( './../lib/5d_blocked.js' ); - - -// VARIABLES // - -var types = [ 'float64' ]; -var order = 'row-major'; - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - ndarray length -* @param {NonNegativeIntegerArray} shape - ndarray shape -* @param {string} xtype - ndarray data type -* @returns {Function} benchmark function -*/ -function createBenchmark( len, shape, xtype ) { - var x; - - x = discreteUniform( len, 1, 100 ); - x = { - 'dtype': xtype, - 'data': x, - 'shape': shape, - 'strides': shape2strides( shape, order ), - 'offset': 0, - 'order': order - }; - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = includes( x, 101 ); - if ( typeof out !== 'boolean' ) { - b.fail( 'should return a boolean' ); - } - } - b.toc(); - if ( !isBoolean( out ) ) { - b.fail( 'should return a boolean' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var sh; - var t1; - var f; - var i; - var j; - - min = 1; // 10^min - max = 6; // 10^max - - for ( j = 0; j < types.length; j++ ) { - t1 = types[ j ]; - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - sh = [ len/2, 2, 1, 1, 1 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - sh = [ 1, 1, 1, 2, len/2 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - len = floor( pow( len, 1.0/5.0 ) ); - sh = [ len, len, len, len, len ]; - len *= pow( len, 4 ); - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - } - } -} - -main(); diff --git a/benchmark/benchmark.5d_columnmajor.js b/benchmark/benchmark.5d_columnmajor.js deleted file mode 100644 index 939570c..0000000 --- a/benchmark/benchmark.5d_columnmajor.js +++ /dev/null @@ -1,134 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var isBoolean = require( '@stdlib/assert-is-boolean' ).isPrimitive; -var pow = require( '@stdlib/math-base-special-pow' ); -var floor = require( '@stdlib/math-base-special-floor' ); -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var format = require( '@stdlib/string-format' ); -var pkg = require( './../package.json' ).name; -var includes = require( './../lib/5d.js' ); - - -// VARIABLES // - -var types = [ 'float64' ]; -var order = 'column-major'; - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - ndarray length -* @param {NonNegativeIntegerArray} shape - ndarray shape -* @param {string} xtype - ndarray data type -* @returns {Function} benchmark function -*/ -function createBenchmark( len, shape, xtype ) { - var x; - - x = discreteUniform( len, 1, 100 ); - x = { - 'dtype': xtype, - 'data': x, - 'shape': shape, - 'strides': shape2strides( shape, order ), - 'offset': 0, - 'order': order - }; - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = includes( x, 101 ); - if ( typeof out !== 'boolean' ) { - b.fail( 'should return a boolean' ); - } - } - b.toc(); - if ( !isBoolean( out ) ) { - b.fail( 'should return a boolean' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var sh; - var t1; - var f; - var i; - var j; - - min = 1; // 10^min - max = 6; // 10^max - - for ( j = 0; j < types.length; j++ ) { - t1 = types[ j ]; - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - sh = [ len/2, 2, 1, 1, 1 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - sh = [ 1, 1, 1, 2, len/2 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - len = floor( pow( len, 1.0/5.0 ) ); - sh = [ len, len, len, len, len ]; - len *= pow( len, 4 ); - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - } - } -} - -main(); diff --git a/benchmark/benchmark.5d_rowmajor.js b/benchmark/benchmark.5d_rowmajor.js deleted file mode 100644 index fdbc708..0000000 --- a/benchmark/benchmark.5d_rowmajor.js +++ /dev/null @@ -1,134 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var isBoolean = require( '@stdlib/assert-is-boolean' ).isPrimitive; -var pow = require( '@stdlib/math-base-special-pow' ); -var floor = require( '@stdlib/math-base-special-floor' ); -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var format = require( '@stdlib/string-format' ); -var pkg = require( './../package.json' ).name; -var includes = require( './../lib/5d.js' ); - - -// VARIABLES // - -var types = [ 'float64' ]; -var order = 'row-major'; - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - ndarray length -* @param {NonNegativeIntegerArray} shape - ndarray shape -* @param {string} xtype - ndarray data type -* @returns {Function} benchmark function -*/ -function createBenchmark( len, shape, xtype ) { - var x; - - x = discreteUniform( len, 1, 100 ); - x = { - 'dtype': xtype, - 'data': x, - 'shape': shape, - 'strides': shape2strides( shape, order ), - 'offset': 0, - 'order': order - }; - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = includes( x, 101 ); - if ( typeof out !== 'boolean' ) { - b.fail( 'should return a boolean' ); - } - } - b.toc(); - if ( !isBoolean( out ) ) { - b.fail( 'should return a boolean' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var sh; - var t1; - var f; - var i; - var j; - - min = 1; // 10^min - max = 6; // 10^max - - for ( j = 0; j < types.length; j++ ) { - t1 = types[ j ]; - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - sh = [ len/2, 2, 1, 1, 1 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - sh = [ 1, 1, 1, 2, len/2 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - len = floor( pow( len, 1.0/5.0 ) ); - sh = [ len, len, len, len, len ]; - len *= pow( len, 4 ); - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - } - } -} - -main(); diff --git a/benchmark/benchmark.6d_blocked_columnmajor.js b/benchmark/benchmark.6d_blocked_columnmajor.js deleted file mode 100644 index e81f1fd..0000000 --- a/benchmark/benchmark.6d_blocked_columnmajor.js +++ /dev/null @@ -1,134 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var isBoolean = require( '@stdlib/assert-is-boolean' ).isPrimitive; -var pow = require( '@stdlib/math-base-special-pow' ); -var floor = require( '@stdlib/math-base-special-floor' ); -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var format = require( '@stdlib/string-format' ); -var pkg = require( './../package.json' ).name; -var includes = require( './../lib/6d_blocked.js' ); - - -// VARIABLES // - -var types = [ 'float64' ]; -var order = 'column-major'; - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - ndarray length -* @param {NonNegativeIntegerArray} shape - ndarray shape -* @param {string} xtype - ndarray data type -* @returns {Function} benchmark function -*/ -function createBenchmark( len, shape, xtype ) { - var x; - - x = discreteUniform( len, 1, 100 ); - x = { - 'dtype': xtype, - 'data': x, - 'shape': shape, - 'strides': shape2strides( shape, order ), - 'offset': 0, - 'order': order - }; - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = includes( x, 101 ); - if ( typeof out !== 'boolean' ) { - b.fail( 'should return a boolean' ); - } - } - b.toc(); - if ( !isBoolean( out ) ) { - b.fail( 'should return a boolean' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var sh; - var t1; - var f; - var i; - var j; - - min = 1; // 10^min - max = 6; // 10^max - - for ( j = 0; j < types.length; j++ ) { - t1 = types[ j ]; - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - sh = [ len/2, 2, 1, 1, 1, 1 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - sh = [ 1, 1, 1, 1, 2, len/2 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - len = floor( pow( len, 1.0/6.0 ) ); - sh = [ len, len, len, len, len, len ]; - len *= pow( len, 5 ); - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - } - } -} - -main(); diff --git a/benchmark/benchmark.6d_blocked_rowmajor.js b/benchmark/benchmark.6d_blocked_rowmajor.js deleted file mode 100644 index e1cdb2d..0000000 --- a/benchmark/benchmark.6d_blocked_rowmajor.js +++ /dev/null @@ -1,134 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var isBoolean = require( '@stdlib/assert-is-boolean' ).isPrimitive; -var pow = require( '@stdlib/math-base-special-pow' ); -var floor = require( '@stdlib/math-base-special-floor' ); -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var format = require( '@stdlib/string-format' ); -var pkg = require( './../package.json' ).name; -var includes = require( './../lib/6d_blocked.js' ); - - -// VARIABLES // - -var types = [ 'float64' ]; -var order = 'row-major'; - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - ndarray length -* @param {NonNegativeIntegerArray} shape - ndarray shape -* @param {string} xtype - ndarray data type -* @returns {Function} benchmark function -*/ -function createBenchmark( len, shape, xtype ) { - var x; - - x = discreteUniform( len, 1, 100 ); - x = { - 'dtype': xtype, - 'data': x, - 'shape': shape, - 'strides': shape2strides( shape, order ), - 'offset': 0, - 'order': order - }; - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = includes( x, 101 ); - if ( typeof out !== 'boolean' ) { - b.fail( 'should return a boolean' ); - } - } - b.toc(); - if ( !isBoolean( out ) ) { - b.fail( 'should return a boolean' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var sh; - var t1; - var f; - var i; - var j; - - min = 1; // 10^min - max = 6; // 10^max - - for ( j = 0; j < types.length; j++ ) { - t1 = types[ j ]; - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - sh = [ len/2, 2, 1, 1, 1, 1 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - sh = [ 1, 1, 1, 1, 2, len/2 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - len = floor( pow( len, 1.0/6.0 ) ); - sh = [ len, len, len, len, len, len ]; - len *= pow( len, 5 ); - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - } - } -} - -main(); diff --git a/benchmark/benchmark.6d_columnmajor.js b/benchmark/benchmark.6d_columnmajor.js deleted file mode 100644 index e39ae48..0000000 --- a/benchmark/benchmark.6d_columnmajor.js +++ /dev/null @@ -1,134 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var isBoolean = require( '@stdlib/assert-is-boolean' ).isPrimitive; -var pow = require( '@stdlib/math-base-special-pow' ); -var floor = require( '@stdlib/math-base-special-floor' ); -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var format = require( '@stdlib/string-format' ); -var pkg = require( './../package.json' ).name; -var includes = require( './../lib/6d.js' ); - - -// VARIABLES // - -var types = [ 'float64' ]; -var order = 'column-major'; - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - ndarray length -* @param {NonNegativeIntegerArray} shape - ndarray shape -* @param {string} xtype - ndarray data type -* @returns {Function} benchmark function -*/ -function createBenchmark( len, shape, xtype ) { - var x; - - x = discreteUniform( len, 1, 100 ); - x = { - 'dtype': xtype, - 'data': x, - 'shape': shape, - 'strides': shape2strides( shape, order ), - 'offset': 0, - 'order': order - }; - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = includes( x, 101 ); - if ( typeof out !== 'boolean' ) { - b.fail( 'should return a boolean' ); - } - } - b.toc(); - if ( !isBoolean( out ) ) { - b.fail( 'should return a boolean' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var sh; - var t1; - var f; - var i; - var j; - - min = 1; // 10^min - max = 6; // 10^max - - for ( j = 0; j < types.length; j++ ) { - t1 = types[ j ]; - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - sh = [ len/2, 2, 1, 1, 1, 1 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - sh = [ 1, 1, 1, 1, 2, len/2 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - len = floor( pow( len, 1.0/6.0 ) ); - sh = [ len, len, len, len, len, len ]; - len *= pow( len, 5 ); - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - } - } -} - -main(); diff --git a/benchmark/benchmark.6d_rowmajor.js b/benchmark/benchmark.6d_rowmajor.js deleted file mode 100644 index 93c505f..0000000 --- a/benchmark/benchmark.6d_rowmajor.js +++ /dev/null @@ -1,134 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var isBoolean = require( '@stdlib/assert-is-boolean' ).isPrimitive; -var pow = require( '@stdlib/math-base-special-pow' ); -var floor = require( '@stdlib/math-base-special-floor' ); -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var format = require( '@stdlib/string-format' ); -var pkg = require( './../package.json' ).name; -var includes = require( './../lib/6d.js' ); - - -// VARIABLES // - -var types = [ 'float64' ]; -var order = 'row-major'; - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - ndarray length -* @param {NonNegativeIntegerArray} shape - ndarray shape -* @param {string} xtype - ndarray data type -* @returns {Function} benchmark function -*/ -function createBenchmark( len, shape, xtype ) { - var x; - - x = discreteUniform( len, 1, 100 ); - x = { - 'dtype': xtype, - 'data': x, - 'shape': shape, - 'strides': shape2strides( shape, order ), - 'offset': 0, - 'order': order - }; - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = includes( x, 101 ); - if ( typeof out !== 'boolean' ) { - b.fail( 'should return a boolean' ); - } - } - b.toc(); - if ( !isBoolean( out ) ) { - b.fail( 'should return a boolean' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var sh; - var t1; - var f; - var i; - var j; - - min = 1; // 10^min - max = 6; // 10^max - - for ( j = 0; j < types.length; j++ ) { - t1 = types[ j ]; - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - sh = [ len/2, 2, 1, 1, 1, 1 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - sh = [ 1, 1, 1, 1, 2, len/2 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - len = floor( pow( len, 1.0/6.0 ) ); - sh = [ len, len, len, len, len, len ]; - len *= pow( len, 5 ); - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - } - } -} - -main(); diff --git a/benchmark/benchmark.7d_blocked_columnmajor.js b/benchmark/benchmark.7d_blocked_columnmajor.js deleted file mode 100644 index 495aff8..0000000 --- a/benchmark/benchmark.7d_blocked_columnmajor.js +++ /dev/null @@ -1,134 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var isBoolean = require( '@stdlib/assert-is-boolean' ).isPrimitive; -var pow = require( '@stdlib/math-base-special-pow' ); -var floor = require( '@stdlib/math-base-special-floor' ); -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var format = require( '@stdlib/string-format' ); -var pkg = require( './../package.json' ).name; -var includes = require( './../lib/7d_blocked.js' ); - - -// VARIABLES // - -var types = [ 'float64' ]; -var order = 'column-major'; - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - ndarray length -* @param {NonNegativeIntegerArray} shape - ndarray shape -* @param {string} xtype - ndarray data type -* @returns {Function} benchmark function -*/ -function createBenchmark( len, shape, xtype ) { - var x; - - x = discreteUniform( len, 1, 100 ); - x = { - 'dtype': xtype, - 'data': x, - 'shape': shape, - 'strides': shape2strides( shape, order ), - 'offset': 0, - 'order': order - }; - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = includes( x, 101 ); - if ( typeof out !== 'boolean' ) { - b.fail( 'should return a boolean' ); - } - } - b.toc(); - if ( !isBoolean( out ) ) { - b.fail( 'should return a boolean' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var sh; - var t1; - var f; - var i; - var j; - - min = 1; // 10^min - max = 6; // 10^max - - for ( j = 0; j < types.length; j++ ) { - t1 = types[ j ]; - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - sh = [ len/2, 2, 1, 1, 1, 1, 1 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - sh = [ 1, 1, 1, 1, 1, 2, len/2 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - len = floor( pow( len, 1.0/7.0 ) ); - sh = [ len, len, len, len, len, len, len ]; - len *= pow( len, 6 ); - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - } - } -} - -main(); diff --git a/benchmark/benchmark.7d_blocked_rowmajor.js b/benchmark/benchmark.7d_blocked_rowmajor.js deleted file mode 100644 index 6ede5cf..0000000 --- a/benchmark/benchmark.7d_blocked_rowmajor.js +++ /dev/null @@ -1,134 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var isBoolean = require( '@stdlib/assert-is-boolean' ).isPrimitive; -var pow = require( '@stdlib/math-base-special-pow' ); -var floor = require( '@stdlib/math-base-special-floor' ); -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var format = require( '@stdlib/string-format' ); -var pkg = require( './../package.json' ).name; -var includes = require( './../lib/7d_blocked.js' ); - - -// VARIABLES // - -var types = [ 'float64' ]; -var order = 'row-major'; - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - ndarray length -* @param {NonNegativeIntegerArray} shape - ndarray shape -* @param {string} xtype - ndarray data type -* @returns {Function} benchmark function -*/ -function createBenchmark( len, shape, xtype ) { - var x; - - x = discreteUniform( len, 1, 100 ); - x = { - 'dtype': xtype, - 'data': x, - 'shape': shape, - 'strides': shape2strides( shape, order ), - 'offset': 0, - 'order': order - }; - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = includes( x, 101 ); - if ( typeof out !== 'boolean' ) { - b.fail( 'should return a boolean' ); - } - } - b.toc(); - if ( !isBoolean( out ) ) { - b.fail( 'should return a boolean' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var sh; - var t1; - var f; - var i; - var j; - - min = 1; // 10^min - max = 6; // 10^max - - for ( j = 0; j < types.length; j++ ) { - t1 = types[ j ]; - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - sh = [ len/2, 2, 1, 1, 1, 1, 1 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - sh = [ 1, 1, 1, 1, 1, 2, len/2 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - len = floor( pow( len, 1.0/7.0 ) ); - sh = [ len, len, len, len, len, len, len ]; - len *= pow( len, 6 ); - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - } - } -} - -main(); diff --git a/benchmark/benchmark.7d_columnmajor.js b/benchmark/benchmark.7d_columnmajor.js deleted file mode 100644 index a6d2407..0000000 --- a/benchmark/benchmark.7d_columnmajor.js +++ /dev/null @@ -1,134 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var isBoolean = require( '@stdlib/assert-is-boolean' ).isPrimitive; -var pow = require( '@stdlib/math-base-special-pow' ); -var floor = require( '@stdlib/math-base-special-floor' ); -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var format = require( '@stdlib/string-format' ); -var pkg = require( './../package.json' ).name; -var includes = require( './../lib/7d.js' ); - - -// VARIABLES // - -var types = [ 'float64' ]; -var order = 'column-major'; - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - ndarray length -* @param {NonNegativeIntegerArray} shape - ndarray shape -* @param {string} xtype - ndarray data type -* @returns {Function} benchmark function -*/ -function createBenchmark( len, shape, xtype ) { - var x; - - x = discreteUniform( len, 1, 100 ); - x = { - 'dtype': xtype, - 'data': x, - 'shape': shape, - 'strides': shape2strides( shape, order ), - 'offset': 0, - 'order': order - }; - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = includes( x, 101 ); - if ( typeof out !== 'boolean' ) { - b.fail( 'should return a boolean' ); - } - } - b.toc(); - if ( !isBoolean( out ) ) { - b.fail( 'should return a boolean' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var sh; - var t1; - var f; - var i; - var j; - - min = 1; // 10^min - max = 6; // 10^max - - for ( j = 0; j < types.length; j++ ) { - t1 = types[ j ]; - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - sh = [ len/2, 2, 1, 1, 1, 1, 1 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - sh = [ 1, 1, 1, 1, 1, 2, len/2 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - len = floor( pow( len, 1.0/7.0 ) ); - sh = [ len, len, len, len, len, len, len ]; - len *= pow( len, 6 ); - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - } - } -} - -main(); diff --git a/benchmark/benchmark.7d_rowmajor.js b/benchmark/benchmark.7d_rowmajor.js deleted file mode 100644 index ec49290..0000000 --- a/benchmark/benchmark.7d_rowmajor.js +++ /dev/null @@ -1,134 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var isBoolean = require( '@stdlib/assert-is-boolean' ).isPrimitive; -var pow = require( '@stdlib/math-base-special-pow' ); -var floor = require( '@stdlib/math-base-special-floor' ); -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var format = require( '@stdlib/string-format' ); -var pkg = require( './../package.json' ).name; -var includes = require( './../lib/7d.js' ); - - -// VARIABLES // - -var types = [ 'float64' ]; -var order = 'row-major'; - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - ndarray length -* @param {NonNegativeIntegerArray} shape - ndarray shape -* @param {string} xtype - ndarray data type -* @returns {Function} benchmark function -*/ -function createBenchmark( len, shape, xtype ) { - var x; - - x = discreteUniform( len, 1, 100 ); - x = { - 'dtype': xtype, - 'data': x, - 'shape': shape, - 'strides': shape2strides( shape, order ), - 'offset': 0, - 'order': order - }; - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = includes( x, 101 ); - if ( typeof out !== 'boolean' ) { - b.fail( 'should return a boolean' ); - } - } - b.toc(); - if ( !isBoolean( out ) ) { - b.fail( 'should return a boolean' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var sh; - var t1; - var f; - var i; - var j; - - min = 1; // 10^min - max = 6; // 10^max - - for ( j = 0; j < types.length; j++ ) { - t1 = types[ j ]; - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - sh = [ len/2, 2, 1, 1, 1, 1, 1 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - sh = [ 1, 1, 1, 1, 1, 2, len/2 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - len = floor( pow( len, 1.0/7.0 ) ); - sh = [ len, len, len, len, len, len, len ]; - len *= pow( len, 6 ); - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - } - } -} - -main(); diff --git a/benchmark/benchmark.8d_blocked_columnmajor.js b/benchmark/benchmark.8d_blocked_columnmajor.js deleted file mode 100644 index 2abf53b..0000000 --- a/benchmark/benchmark.8d_blocked_columnmajor.js +++ /dev/null @@ -1,134 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var isBoolean = require( '@stdlib/assert-is-boolean' ).isPrimitive; -var pow = require( '@stdlib/math-base-special-pow' ); -var floor = require( '@stdlib/math-base-special-floor' ); -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var format = require( '@stdlib/string-format' ); -var pkg = require( './../package.json' ).name; -var includes = require( './../lib/8d_blocked.js' ); - - -// VARIABLES // - -var types = [ 'float64' ]; -var order = 'row-major'; - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - ndarray length -* @param {NonNegativeIntegerArray} shape - ndarray shape -* @param {string} xtype - ndarray data type -* @returns {Function} benchmark function -*/ -function createBenchmark( len, shape, xtype ) { - var x; - - x = discreteUniform( len, 1, 100 ); - x = { - 'dtype': xtype, - 'data': x, - 'shape': shape, - 'strides': shape2strides( shape, order ), - 'offset': 0, - 'order': order - }; - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = includes( x, 101 ); - if ( typeof out !== 'boolean' ) { - b.fail( 'should return a boolean' ); - } - } - b.toc(); - if ( !isBoolean( out ) ) { - b.fail( 'should return a boolean' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var sh; - var t1; - var f; - var i; - var j; - - min = 1; // 10^min - max = 6; // 10^max - - for ( j = 0; j < types.length; j++ ) { - t1 = types[ j ]; - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - sh = [ len/2, 2, 1, 1, 1, 1, 1, 1 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - sh = [ 1, 1, 1, 1, 1, 1, 2, len/2 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - len = floor( pow( len, 1.0/8.0 ) ); - sh = [ len, len, len, len, len, len, len, len ]; - len *= pow( len, 7 ); - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - } - } -} - -main(); diff --git a/benchmark/benchmark.8d_blocked_rowmajor.js b/benchmark/benchmark.8d_blocked_rowmajor.js deleted file mode 100644 index 2abf53b..0000000 --- a/benchmark/benchmark.8d_blocked_rowmajor.js +++ /dev/null @@ -1,134 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var isBoolean = require( '@stdlib/assert-is-boolean' ).isPrimitive; -var pow = require( '@stdlib/math-base-special-pow' ); -var floor = require( '@stdlib/math-base-special-floor' ); -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var format = require( '@stdlib/string-format' ); -var pkg = require( './../package.json' ).name; -var includes = require( './../lib/8d_blocked.js' ); - - -// VARIABLES // - -var types = [ 'float64' ]; -var order = 'row-major'; - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - ndarray length -* @param {NonNegativeIntegerArray} shape - ndarray shape -* @param {string} xtype - ndarray data type -* @returns {Function} benchmark function -*/ -function createBenchmark( len, shape, xtype ) { - var x; - - x = discreteUniform( len, 1, 100 ); - x = { - 'dtype': xtype, - 'data': x, - 'shape': shape, - 'strides': shape2strides( shape, order ), - 'offset': 0, - 'order': order - }; - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = includes( x, 101 ); - if ( typeof out !== 'boolean' ) { - b.fail( 'should return a boolean' ); - } - } - b.toc(); - if ( !isBoolean( out ) ) { - b.fail( 'should return a boolean' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var sh; - var t1; - var f; - var i; - var j; - - min = 1; // 10^min - max = 6; // 10^max - - for ( j = 0; j < types.length; j++ ) { - t1 = types[ j ]; - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - sh = [ len/2, 2, 1, 1, 1, 1, 1, 1 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - sh = [ 1, 1, 1, 1, 1, 1, 2, len/2 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - len = floor( pow( len, 1.0/8.0 ) ); - sh = [ len, len, len, len, len, len, len, len ]; - len *= pow( len, 7 ); - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - } - } -} - -main(); diff --git a/benchmark/benchmark.8d_columnmajor.js b/benchmark/benchmark.8d_columnmajor.js deleted file mode 100644 index e77602a..0000000 --- a/benchmark/benchmark.8d_columnmajor.js +++ /dev/null @@ -1,134 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var isBoolean = require( '@stdlib/assert-is-boolean' ).isPrimitive; -var pow = require( '@stdlib/math-base-special-pow' ); -var floor = require( '@stdlib/math-base-special-floor' ); -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var format = require( '@stdlib/string-format' ); -var pkg = require( './../package.json' ).name; -var includes = require( './../lib/8d.js' ); - - -// VARIABLES // - -var types = [ 'float64' ]; -var order = 'column-major'; - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - ndarray length -* @param {NonNegativeIntegerArray} shape - ndarray shape -* @param {string} xtype - ndarray data type -* @returns {Function} benchmark function -*/ -function createBenchmark( len, shape, xtype ) { - var x; - - x = discreteUniform( len, 1, 100 ); - x = { - 'dtype': xtype, - 'data': x, - 'shape': shape, - 'strides': shape2strides( shape, order ), - 'offset': 0, - 'order': order - }; - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = includes( x, 101 ); - if ( typeof out !== 'boolean' ) { - b.fail( 'should return a boolean' ); - } - } - b.toc(); - if ( !isBoolean( out ) ) { - b.fail( 'should return a boolean' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var sh; - var t1; - var f; - var i; - var j; - - min = 1; // 10^min - max = 6; // 10^max - - for ( j = 0; j < types.length; j++ ) { - t1 = types[ j ]; - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - sh = [ len/2, 2, 1, 1, 1, 1, 1, 1 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - sh = [ 1, 1, 1, 1, 1, 1, 2, len/2 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - len = floor( pow( len, 1.0/8.0 ) ); - sh = [ len, len, len, len, len, len, len, len ]; - len *= pow( len, 7 ); - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - } - } -} - -main(); diff --git a/benchmark/benchmark.8d_rowmajor.js b/benchmark/benchmark.8d_rowmajor.js deleted file mode 100644 index 364986e..0000000 --- a/benchmark/benchmark.8d_rowmajor.js +++ /dev/null @@ -1,134 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var isBoolean = require( '@stdlib/assert-is-boolean' ).isPrimitive; -var pow = require( '@stdlib/math-base-special-pow' ); -var floor = require( '@stdlib/math-base-special-floor' ); -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var format = require( '@stdlib/string-format' ); -var pkg = require( './../package.json' ).name; -var includes = require( './../lib/8d.js' ); - - -// VARIABLES // - -var types = [ 'float64' ]; -var order = 'row-major'; - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - ndarray length -* @param {NonNegativeIntegerArray} shape - ndarray shape -* @param {string} xtype - ndarray data type -* @returns {Function} benchmark function -*/ -function createBenchmark( len, shape, xtype ) { - var x; - - x = discreteUniform( len, 1, 100 ); - x = { - 'dtype': xtype, - 'data': x, - 'shape': shape, - 'strides': shape2strides( shape, order ), - 'offset': 0, - 'order': order - }; - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = includes( x, 101 ); - if ( typeof out !== 'boolean' ) { - b.fail( 'should return a boolean' ); - } - } - b.toc(); - if ( !isBoolean( out ) ) { - b.fail( 'should return a boolean' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var sh; - var t1; - var f; - var i; - var j; - - min = 1; // 10^min - max = 6; // 10^max - - for ( j = 0; j < types.length; j++ ) { - t1 = types[ j ]; - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - sh = [ len/2, 2, 1, 1, 1, 1, 1, 1 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - sh = [ 1, 1, 1, 1, 1, 1, 2, len/2 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - len = floor( pow( len, 1.0/8.0 ) ); - sh = [ len, len, len, len, len, len, len, len ]; - len *= pow( len, 7 ); - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - } - } -} - -main(); diff --git a/benchmark/benchmark.9d_blocked_columnmajor.js b/benchmark/benchmark.9d_blocked_columnmajor.js deleted file mode 100644 index 1e99cf8..0000000 --- a/benchmark/benchmark.9d_blocked_columnmajor.js +++ /dev/null @@ -1,134 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var isBoolean = require( '@stdlib/assert-is-boolean' ).isPrimitive; -var pow = require( '@stdlib/math-base-special-pow' ); -var floor = require( '@stdlib/math-base-special-floor' ); -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var format = require( '@stdlib/string-format' ); -var pkg = require( './../package.json' ).name; -var includes = require( './../lib/9d_blocked.js' ); - - -// VARIABLES // - -var types = [ 'float64' ]; -var order = 'column-major'; - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - ndarray length -* @param {NonNegativeIntegerArray} shape - ndarray shape -* @param {string} xtype - ndarray data type -* @returns {Function} benchmark function -*/ -function createBenchmark( len, shape, xtype ) { - var x; - - x = discreteUniform( len, 1, 100 ); - x = { - 'dtype': xtype, - 'data': x, - 'shape': shape, - 'strides': shape2strides( shape, order ), - 'offset': 0, - 'order': order - }; - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = includes( x, 101 ); - if ( typeof out !== 'boolean' ) { - b.fail( 'should return a boolean' ); - } - } - b.toc(); - if ( !isBoolean( out ) ) { - b.fail( 'should return a boolean' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var sh; - var t1; - var f; - var i; - var j; - - min = 1; // 10^min - max = 6; // 10^max - - for ( j = 0; j < types.length; j++ ) { - t1 = types[ j ]; - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - sh = [ len/2, 2, 1, 1, 1, 1, 1, 1, 1 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - sh = [ 1, 1, 1, 1, 1, 1, 1, 2, len/2 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - len = floor( pow( len, 1.0/9.0 ) ); - sh = [ len, len, len, len, len, len, len, len, len ]; - len *= pow( len, 8 ); - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - } - } -} - -main(); diff --git a/benchmark/benchmark.9d_blocked_rowmajor.js b/benchmark/benchmark.9d_blocked_rowmajor.js deleted file mode 100644 index da89e95..0000000 --- a/benchmark/benchmark.9d_blocked_rowmajor.js +++ /dev/null @@ -1,134 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var isBoolean = require( '@stdlib/assert-is-boolean' ).isPrimitive; -var pow = require( '@stdlib/math-base-special-pow' ); -var floor = require( '@stdlib/math-base-special-floor' ); -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var format = require( '@stdlib/string-format' ); -var pkg = require( './../package.json' ).name; -var includes = require( './../lib/9d_blocked.js' ); - - -// VARIABLES // - -var types = [ 'float64' ]; -var order = 'row-major'; - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - ndarray length -* @param {NonNegativeIntegerArray} shape - ndarray shape -* @param {string} xtype - ndarray data type -* @returns {Function} benchmark function -*/ -function createBenchmark( len, shape, xtype ) { - var x; - - x = discreteUniform( len, 1, 100 ); - x = { - 'dtype': xtype, - 'data': x, - 'shape': shape, - 'strides': shape2strides( shape, order ), - 'offset': 0, - 'order': order - }; - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = includes( x, 101 ); - if ( typeof out !== 'boolean' ) { - b.fail( 'should return a boolean' ); - } - } - b.toc(); - if ( !isBoolean( out ) ) { - b.fail( 'should return a boolean' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var sh; - var t1; - var f; - var i; - var j; - - min = 1; // 10^min - max = 6; // 10^max - - for ( j = 0; j < types.length; j++ ) { - t1 = types[ j ]; - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - sh = [ len/2, 2, 1, 1, 1, 1, 1, 1, 1 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - sh = [ 1, 1, 1, 1, 1, 1, 1, 2, len/2 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - len = floor( pow( len, 1.0/9.0 ) ); - sh = [ len, len, len, len, len, len, len, len, len ]; - len *= pow( len, 8 ); - f = createBenchmark( len, sh, t1 ); - bench( format( '%s::blocked:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - } - } -} - -main(); diff --git a/benchmark/benchmark.9d_columnmajor.js b/benchmark/benchmark.9d_columnmajor.js deleted file mode 100644 index 2f820db..0000000 --- a/benchmark/benchmark.9d_columnmajor.js +++ /dev/null @@ -1,134 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var isBoolean = require( '@stdlib/assert-is-boolean' ).isPrimitive; -var pow = require( '@stdlib/math-base-special-pow' ); -var floor = require( '@stdlib/math-base-special-floor' ); -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var format = require( '@stdlib/string-format' ); -var pkg = require( './../package.json' ).name; -var includes = require( './../lib/9d.js' ); - - -// VARIABLES // - -var types = [ 'float64' ]; -var order = 'column-major'; - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - ndarray length -* @param {NonNegativeIntegerArray} shape - ndarray shape -* @param {string} xtype - ndarray data type -* @returns {Function} benchmark function -*/ -function createBenchmark( len, shape, xtype ) { - var x; - - x = discreteUniform( len, 1, 100 ); - x = { - 'dtype': xtype, - 'data': x, - 'shape': shape, - 'strides': shape2strides( shape, order ), - 'offset': 0, - 'order': order - }; - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = includes( x, 101 ); - if ( typeof out !== 'boolean' ) { - b.fail( 'should return a boolean' ); - } - } - b.toc(); - if ( !isBoolean( out ) ) { - b.fail( 'should return a boolean' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var sh; - var t1; - var f; - var i; - var j; - - min = 1; // 10^min - max = 6; // 10^max - - for ( j = 0; j < types.length; j++ ) { - t1 = types[ j ]; - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - sh = [ len/2, 2, 1, 1, 1, 1, 1, 1, 1 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - sh = [ 1, 1, 1, 1, 1, 1, 1, 2, len/2 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - len = floor( pow( len, 1.0/9.0 ) ); - sh = [ len, len, len, len, len, len, len, len, len ]; - len *= pow( len, 8 ); - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - } - } -} - -main(); diff --git a/benchmark/benchmark.9d_rowmajor.js b/benchmark/benchmark.9d_rowmajor.js deleted file mode 100644 index 40e9bc4..0000000 --- a/benchmark/benchmark.9d_rowmajor.js +++ /dev/null @@ -1,134 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var isBoolean = require( '@stdlib/assert-is-boolean' ).isPrimitive; -var pow = require( '@stdlib/math-base-special-pow' ); -var floor = require( '@stdlib/math-base-special-floor' ); -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var format = require( '@stdlib/string-format' ); -var pkg = require( './../package.json' ).name; -var includes = require( './../lib/9d.js' ); - - -// VARIABLES // - -var types = [ 'float64' ]; -var order = 'row-major'; - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - ndarray length -* @param {NonNegativeIntegerArray} shape - ndarray shape -* @param {string} xtype - ndarray data type -* @returns {Function} benchmark function -*/ -function createBenchmark( len, shape, xtype ) { - var x; - - x = discreteUniform( len, 1, 100 ); - x = { - 'dtype': xtype, - 'data': x, - 'shape': shape, - 'strides': shape2strides( shape, order ), - 'offset': 0, - 'order': order - }; - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = includes( x, 101 ); - if ( typeof out !== 'boolean' ) { - b.fail( 'should return a boolean' ); - } - } - b.toc(); - if ( !isBoolean( out ) ) { - b.fail( 'should return a boolean' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var sh; - var t1; - var f; - var i; - var j; - - min = 1; // 10^min - max = 6; // 10^max - - for ( j = 0; j < types.length; j++ ) { - t1 = types[ j ]; - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - sh = [ len/2, 2, 1, 1, 1, 1, 1, 1, 1 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - sh = [ 1, 1, 1, 1, 1, 1, 1, 2, len/2 ]; - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - - len = floor( pow( len, 1.0/9.0 ) ); - sh = [ len, len, len, len, len, len, len, len, len ]; - len *= pow( len, 8 ); - f = createBenchmark( len, sh, t1 ); - bench( format( '%s:ndims=%d,len=%d,shape=[%s],xorder=%s,xtype=%s', pkg, sh.length, len, sh.join(','), order, t1 ), f ); - } - } -} - -main(); diff --git a/branches.md b/branches.md deleted file mode 100644 index 3130530..0000000 --- a/branches.md +++ /dev/null @@ -1,56 +0,0 @@ - - -# Branches - -This repository has the following branches: - -- **main**: default branch generated from the [stdlib project][stdlib-url], where all development takes place. -- **production**: [production build][production-url] of the package (e.g., reformatted error messages to reduce bundle sizes and thus the number of bytes transmitted over a network). -- **esm**: [ES Module][esm-url] branch for use via a `script` tag without the need for installation and bundlers (see [README][esm-readme]). -- **deno**: [Deno][deno-url] branch for use in Deno (see [README][deno-readme]). -- **umd**: [UMD][umd-url] branch for use in Observable, or in dual browser/Node.js environments (see [README][umd-readme]). - -The following diagram illustrates the relationships among the above branches: - -```mermaid -graph TD; -A[stdlib]-->|generate standalone package|B; -B[main] -->|productionize| C[production]; -C -->|bundle| D[esm]; -C -->|bundle| E[deno]; -C -->|bundle| F[umd]; - -%% click A href "https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/ndarray/base/includes" -%% click B href "https://github.com/stdlib-js/ndarray-base-includes/tree/main" -%% click C href "https://github.com/stdlib-js/ndarray-base-includes/tree/production" -%% click D href "https://github.com/stdlib-js/ndarray-base-includes/tree/esm" -%% click E href "https://github.com/stdlib-js/ndarray-base-includes/tree/deno" -%% click F href "https://github.com/stdlib-js/ndarray-base-includes/tree/umd" -``` - -[stdlib-url]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/ndarray/base/includes -[production-url]: https://github.com/stdlib-js/ndarray-base-includes/tree/production -[deno-url]: https://github.com/stdlib-js/ndarray-base-includes/tree/deno -[deno-readme]: https://github.com/stdlib-js/ndarray-base-includes/blob/deno/README.md -[umd-url]: https://github.com/stdlib-js/ndarray-base-includes/tree/umd -[umd-readme]: https://github.com/stdlib-js/ndarray-base-includes/blob/umd/README.md -[esm-url]: https://github.com/stdlib-js/ndarray-base-includes/tree/esm -[esm-readme]: https://github.com/stdlib-js/ndarray-base-includes/blob/esm/README.md \ No newline at end of file diff --git a/dist/index.d.ts b/dist/index.d.ts deleted file mode 100644 index 90f394f..0000000 --- a/dist/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -/// -import includes from '../docs/types/index'; -export = includes; \ No newline at end of file diff --git a/dist/index.js b/dist/index.js deleted file mode 100644 index 81e9634..0000000 --- a/dist/index.js +++ /dev/null @@ -1,131 +0,0 @@ -"use strict";var X=function(a,E){return function(){try{return E||a((E={exports:{}}).exports,E),E.exports}catch(r){throw (E=0, r)}};};var ur=X(function(To,tr){ -var Pv=require('@stdlib/ndarray-base-nullary-loop-interchange-order/dist'),Iv=require('@stdlib/ndarray-base-nullary-tiling-block-size/dist');function _v(a,E){var r,m,O,z,k,h,S,x,d,v,s,e,f,c,i,l,n;for(n=Pv(a.shape,a.strides),S=n.sh,v=n.sx,r=Iv(a.dtype),s=a.offset,m=a.data,z=v[0],O=a.accessors[0],l=S[1];l>0;)for(l0;)for(i0;)for(o0;)for(j0;)for(t0;)for(D0;)for(y0;)for(b0;)for(p0;)for(I0;)for(C0;)for(_0;)for(P0;)for(g0;)for(U0;)for(N0;)for(B0;)for(L0;)for(M0;)for(I0;)for(V0;)for(w0;)for(A0;)for(K0;)for(R0;)for(U0;)for(N0;)for(Q0;)for(J0;)for(H0;)for(G0;)for(F0;)for(V0;)for(w0;)for(A0;)for($0;)for(Z0;)for(Y0;)for(W0;)for(T0;)for(Q0;)for(J0;)for(H0;)for(G0;)for(sr0;)for(er0;)for(vr0;)for(ar0;)for(rr0;)for($0;)for(Z0;)for(Y0;)for(W0;)for(T0;)for(i0;)for(c0;)for(j0;)for(t0;)for(u0;)for(y0;)for(b0;)for(p0;)for(q0;)for(C0;)for(_0;)for(P0;)for(g0;)for(D0;)for(N0;)for(B0;)for(L0;)for(M0;)for(I0;)for(C0;)for(w0;)for(A0;)for(K0;)for(R0;)for(U0;)for(N0;)for(B0;)for(J0;)for(H0;)for(G0;)for(F0;)for(V0;)for(w0;)for(A0;)for(K0;)for(Z0;)for(Y0;)for(W0;)for(T0;)for(Q0;)for(J0;)for(H0;)for(G0;)for(F0;)for(er0;)for(vr0;)for(ar0;)for(rr0;)for($0;)for(Z0;)for(Y0;)for(W0;)for(T0;)for(Q0;)for(i0;)for(c0;)for(j0;)for(t0;)for(u0;)for(y0;)for(b0;)for(p0;)for(q0;)for(C0;)for(_0;)for(P0;)for(g0;)for(D0;)for(N0;)for(B0;)for(L0;)for(M0;)for(I0;)for(C0;)for(w0;)for(A0;)for(K0;)for(R0;)for(U0;)for(N0;)for(B0;)for(J0;)for(H0;)for(G0;)for(F0;)for(V0;)for(w0;)for(A0;)for(K0;)for(Z0;)for(Y0;)for(W0;)for(T0;)for(Q0;)for(J0;)for(H0;)for(G0;)for(F0;)for(er0;)for(vr0;)for(ar0;)for(rr0;)for($0;)for(Z0;)for(Y0;)for(W0;)for(T0;)for(Q} x.accessors - data buffer accessors\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' );\n* var accessors = require( '@stdlib/array-base-accessors' );\n*\n* // Create a data buffer:\n* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'generic',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major',\n* 'accessors': accessors( xbuf ).accessors\n* };\n*\n* // Perform reduction:\n* var out = blockedincludes2d( x, 6.0 );\n* // returns true\n*\n* out = blockedincludes2d( x, 100.0 );\n* // returns false\n*/\nfunction blockedincludes2d( x, value ) {\n\tvar bsize;\n\tvar xbuf;\n\tvar get;\n\tvar dx0;\n\tvar dx1;\n\tvar ox1;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar j0;\n\tvar j1;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Cache accessor:\n\tget = x.accessors[0];\n\n\t// Iterate over blocks...\n\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\tif ( j1 < bsize ) {\n\t\t\ts1 = j1;\n\t\t\tj1 = 0;\n\t\t} else {\n\t\t\ts1 = bsize;\n\t\t\tj1 -= bsize;\n\t\t}\n\t\tox1 = ox + ( j1*sx[1] );\n\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\tif ( j0 < bsize ) {\n\t\t\t\ts0 = j0;\n\t\t\t\tj0 = 0;\n\t\t\t} else {\n\t\t\t\ts0 = bsize;\n\t\t\t\tj0 -= bsize;\n\t\t\t}\n\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t// Compute the loop offset increment:\n\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t// Iterate over the ndarray dimensions...\n\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\tif ( get( xbuf, ix ) === value ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx0;\n\t\t\t\t}\n\t\t\t\tix += dx1;\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = blockedincludes2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth */\n\n'use strict';\n\n// MODULES //\n\nvar loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' );\nvar blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' );\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {Array} x.accessors - data buffer accessors\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' );\n* var accessors = require( '@stdlib/array-base-accessors' );\n*\n* // Create a data buffer:\n* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'generic',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major',\n* 'accessors': accessors( xbuf ).accessors\n* };\n*\n* // Perform reduction:\n* var out = blockedincludes3d( x, 6.0 );\n* // returns true\n*\n* out = blockedincludes3d( x, 100.0 );\n* // returns false\n*/\nfunction blockedincludes3d( x, value ) {\n\tvar bsize;\n\tvar xbuf;\n\tvar get;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar ox1;\n\tvar ox2;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar s2;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Cache accessor:\n\tget = x.accessors[0];\n\n\t// Iterate over blocks...\n\tfor ( j2 = sh[2]; j2 > 0; ) {\n\t\tif ( j2 < bsize ) {\n\t\t\ts2 = j2;\n\t\t\tj2 = 0;\n\t\t} else {\n\t\t\ts2 = bsize;\n\t\t\tj2 -= bsize;\n\t\t}\n\t\tox2 = ox + ( j2*sx[2] );\n\t\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\t\tif ( j1 < bsize ) {\n\t\t\t\ts1 = j1;\n\t\t\t\tj1 = 0;\n\t\t\t} else {\n\t\t\t\ts1 = bsize;\n\t\t\t\tj1 -= bsize;\n\t\t\t}\n\t\t\tdx2 = sx[2] - ( s1*sx[1] );\n\t\t\tox1 = ox2 + ( j1*sx[1] );\n\t\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\t\tif ( j0 < bsize ) {\n\t\t\t\t\ts0 = j0;\n\t\t\t\t\tj0 = 0;\n\t\t\t\t} else {\n\t\t\t\t\ts0 = bsize;\n\t\t\t\t\tj0 -= bsize;\n\t\t\t\t}\n\t\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t\t// Compute the loop offset increment:\n\t\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t\t// Iterate over the ndarray dimensions...\n\t\t\t\tfor ( i2 = 0; i2 < s2; i2++ ) {\n\t\t\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\t\t\tif ( get( xbuf, ix ) === value ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tix += dx1;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx2;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = blockedincludes3d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth */\n\n'use strict';\n\n// MODULES //\n\nvar loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' );\nvar blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' );\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {Array} x.accessors - data buffer accessors\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' );\n* var accessors = require( '@stdlib/array-base-accessors' );\n*\n* // Create a data buffer:\n* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'generic',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major',\n* 'accessors': accessors( xbuf ).accessors\n* };\n*\n* // Perform reduction:\n* var out = blockedincludes4d( x, 6.0 );\n* // returns true\n*\n* out = blockedincludes4d( x, 100.0 );\n* // returns false\n*/\nfunction blockedincludes4d( x, value ) {\n\tvar bsize;\n\tvar xbuf;\n\tvar get;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar ox1;\n\tvar ox2;\n\tvar ox3;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar s2;\n\tvar s3;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar j3;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Cache accessor:\n\tget = x.accessors[0];\n\n\t// Iterate over blocks...\n\tfor ( j3 = sh[3]; j3 > 0; ) {\n\t\tif ( j3 < bsize ) {\n\t\t\ts3 = j3;\n\t\t\tj3 = 0;\n\t\t} else {\n\t\t\ts3 = bsize;\n\t\t\tj3 -= bsize;\n\t\t}\n\t\tox3 = ox + ( j3*sx[3] );\n\t\tfor ( j2 = sh[2]; j2 > 0; ) {\n\t\t\tif ( j2 < bsize ) {\n\t\t\t\ts2 = j2;\n\t\t\t\tj2 = 0;\n\t\t\t} else {\n\t\t\t\ts2 = bsize;\n\t\t\t\tj2 -= bsize;\n\t\t\t}\n\t\t\tdx3 = sx[3] - ( s2*sx[2] );\n\t\t\tox2 = ox3 + ( j2*sx[2] );\n\t\t\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\t\t\tif ( j1 < bsize ) {\n\t\t\t\t\ts1 = j1;\n\t\t\t\t\tj1 = 0;\n\t\t\t\t} else {\n\t\t\t\t\ts1 = bsize;\n\t\t\t\t\tj1 -= bsize;\n\t\t\t\t}\n\t\t\t\tdx2 = sx[2] - ( s1*sx[1] );\n\t\t\t\tox1 = ox2 + ( j1*sx[1] );\n\t\t\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\t\t\tif ( j0 < bsize ) {\n\t\t\t\t\t\ts0 = j0;\n\t\t\t\t\t\tj0 = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts0 = bsize;\n\t\t\t\t\t\tj0 -= bsize;\n\t\t\t\t\t}\n\t\t\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t\t\t// Compute the loop offset increment:\n\t\t\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t\t\t// Iterate over the ndarray dimensions...\n\t\t\t\t\tfor ( i3 = 0; i3 < s3; i3++ ) {\n\t\t\t\t\t\tfor ( i2 = 0; i2 < s2; i2++ ) {\n\t\t\t\t\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\t\t\t\t\tif ( get( xbuf, ix ) === value ) {\n\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tix += dx1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tix += dx2;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tix += dx3;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = blockedincludes4d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth */\n\n'use strict';\n\n// MODULES //\n\nvar loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' );\nvar blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' );\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {Array} x.accessors - data buffer accessors\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' );\n* var accessors = require( '@stdlib/array-base-accessors' );\n*\n* // Create a data buffer:\n* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 8, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'generic',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major',\n* 'accessors': accessors( xbuf ).accessors\n* };\n*\n* // Perform reduction:\n* var out = blockedincludes5d( x, 6.0 );\n* // returns true\n*\n* out = blockedincludes5d( x, 100.0 );\n* // returns false\n*/\nfunction blockedincludes5d( x, value ) {\n\tvar bsize;\n\tvar xbuf;\n\tvar get;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar ox1;\n\tvar ox2;\n\tvar ox3;\n\tvar ox4;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar s2;\n\tvar s3;\n\tvar s4;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar j3;\n\tvar j4;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Cache accessor:\n\tget = x.accessors[0];\n\n\t// Iterate over blocks...\n\tfor ( j4 = sh[4]; j4 > 0; ) {\n\t\tif ( j4 < bsize ) {\n\t\t\ts4 = j4;\n\t\t\tj4 = 0;\n\t\t} else {\n\t\t\ts4 = bsize;\n\t\t\tj4 -= bsize;\n\t\t}\n\t\tox4 = ox + ( j4*sx[4] );\n\t\tfor ( j3 = sh[3]; j3 > 0; ) {\n\t\t\tif ( j3 < bsize ) {\n\t\t\t\ts3 = j3;\n\t\t\t\tj3 = 0;\n\t\t\t} else {\n\t\t\t\ts3 = bsize;\n\t\t\t\tj3 -= bsize;\n\t\t\t}\n\t\t\tdx4 = sx[4] - ( s3*sx[3] );\n\t\t\tox3 = ox4 + ( j3*sx[3] );\n\t\t\tfor ( j2 = sh[2]; j2 > 0; ) {\n\t\t\t\tif ( j2 < bsize ) {\n\t\t\t\t\ts2 = j2;\n\t\t\t\t\tj2 = 0;\n\t\t\t\t} else {\n\t\t\t\t\ts2 = bsize;\n\t\t\t\t\tj2 -= bsize;\n\t\t\t\t}\n\t\t\t\tdx3 = sx[3] - ( s2*sx[2] );\n\t\t\t\tox2 = ox3 + ( j2*sx[2] );\n\t\t\t\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\t\t\t\tif ( j1 < bsize ) {\n\t\t\t\t\t\ts1 = j1;\n\t\t\t\t\t\tj1 = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts1 = bsize;\n\t\t\t\t\t\tj1 -= bsize;\n\t\t\t\t\t}\n\t\t\t\t\tdx2 = sx[2] - ( s1*sx[1] );\n\t\t\t\t\tox1 = ox2 + ( j1*sx[1] );\n\t\t\t\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\t\t\t\tif ( j0 < bsize ) {\n\t\t\t\t\t\t\ts0 = j0;\n\t\t\t\t\t\t\tj0 = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ts0 = bsize;\n\t\t\t\t\t\t\tj0 -= bsize;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\t\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t\t\t\t// Compute the loop offset increment:\n\t\t\t\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t\t\t\t// Iterate over the ndarray dimensions...\n\t\t\t\t\t\tfor ( i4 = 0; i4 < s4; i4++ ) {\n\t\t\t\t\t\t\tfor ( i3 = 0; i3 < s3; i3++ ) {\n\t\t\t\t\t\t\t\tfor ( i2 = 0; i2 < s2; i2++ ) {\n\t\t\t\t\t\t\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\t\t\t\t\t\t\tif ( get( xbuf, ix ) === value ) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tix += dx1;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tix += dx2;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tix += dx3;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tix += dx4;\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\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = blockedincludes5d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MODULES //\n\nvar loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' );\nvar blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' );\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {Array} x.accessors - data buffer accessors\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' );\n* var accessors = require( '@stdlib/array-base-accessors' );\n*\n* // Create a data buffer:\n* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 8, 8, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'generic',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major',\n* 'accessors': accessors( xbuf ).accessors\n* };\n*\n* // Perform reduction:\n* var out = blockedincludes6d( x, 6.0 );\n* // returns true\n*\n* out = blockedincludes6d( x, 100.0 );\n* // returns false\n*/\nfunction blockedincludes6d( x, value ) { // eslint-disable-line max-statements\n\tvar bsize;\n\tvar xbuf;\n\tvar get;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar ox1;\n\tvar ox2;\n\tvar ox3;\n\tvar ox4;\n\tvar ox5;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar s2;\n\tvar s3;\n\tvar s4;\n\tvar s5;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar j3;\n\tvar j4;\n\tvar j5;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Cache accessor:\n\tget = x.accessors[0];\n\n\t// Iterate over blocks...\n\tfor ( j5 = sh[5]; j5 > 0; ) {\n\t\tif ( j5 < bsize ) {\n\t\t\ts5 = j5;\n\t\t\tj5 = 0;\n\t\t} else {\n\t\t\ts5 = bsize;\n\t\t\tj5 -= bsize;\n\t\t}\n\t\tox5 = ox + ( j5*sx[5] );\n\t\tfor ( j4 = sh[4]; j4 > 0; ) {\n\t\t\tif ( j4 < bsize ) {\n\t\t\t\ts4 = j4;\n\t\t\t\tj4 = 0;\n\t\t\t} else {\n\t\t\t\ts4 = bsize;\n\t\t\t\tj4 -= bsize;\n\t\t\t}\n\t\t\tdx5 = sx[5] - ( s4*sx[4] );\n\t\t\tox4 = ox5 + ( j4*sx[4] );\n\t\t\tfor ( j3 = sh[3]; j3 > 0; ) {\n\t\t\t\tif ( j3 < bsize ) {\n\t\t\t\t\ts3 = j3;\n\t\t\t\t\tj3 = 0;\n\t\t\t\t} else {\n\t\t\t\t\ts3 = bsize;\n\t\t\t\t\tj3 -= bsize;\n\t\t\t\t}\n\t\t\t\tdx4 = sx[4] - ( s3*sx[3] );\n\t\t\t\tox3 = ox4 + ( j3*sx[3] );\n\t\t\t\tfor ( j2 = sh[2]; j2 > 0; ) {\n\t\t\t\t\tif ( j2 < bsize ) {\n\t\t\t\t\t\ts2 = j2;\n\t\t\t\t\t\tj2 = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts2 = bsize;\n\t\t\t\t\t\tj2 -= bsize;\n\t\t\t\t\t}\n\t\t\t\t\tdx3 = sx[3] - ( s2*sx[2] );\n\t\t\t\t\tox2 = ox3 + ( j2*sx[2] );\n\t\t\t\t\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\t\t\t\t\tif ( j1 < bsize ) {\n\t\t\t\t\t\t\ts1 = j1;\n\t\t\t\t\t\t\tj1 = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ts1 = bsize;\n\t\t\t\t\t\t\tj1 -= bsize;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdx2 = sx[2] - ( s1*sx[1] );\n\t\t\t\t\t\tox1 = ox2 + ( j1*sx[1] );\n\t\t\t\t\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\t\t\t\t\tif ( j0 < bsize ) {\n\t\t\t\t\t\t\t\ts0 = j0;\n\t\t\t\t\t\t\t\tj0 = 0;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ts0 = bsize;\n\t\t\t\t\t\t\t\tj0 -= bsize;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\t\t\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t\t\t\t\t// Compute the loop offset increment:\n\t\t\t\t\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t\t\t\t\t// Iterate over the ndarray dimensions...\n\t\t\t\t\t\t\tfor ( i5 = 0; i5 < s5; i5++ ) {\n\t\t\t\t\t\t\t\tfor ( i4 = 0; i4 < s4; i4++ ) {\n\t\t\t\t\t\t\t\t\tfor ( i3 = 0; i3 < s3; i3++ ) {\n\t\t\t\t\t\t\t\t\t\tfor ( i2 = 0; i2 < s2; i2++ ) {\n\t\t\t\t\t\t\t\t\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tif ( get( xbuf, ix ) === value ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn true;\n\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\tix += dx0;\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\tix += dx1;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tix += dx2;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tix += dx3;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tix += dx4;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tix += dx5;\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}\n\t\t}\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = blockedincludes6d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MODULES //\n\nvar loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' );\nvar blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' );\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {Array} x.accessors - data buffer accessors\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' );\n* var accessors = require( '@stdlib/array-base-accessors' );\n*\n* // Create a data buffer:\n* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 8, 8, 8, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'generic',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major',\n* 'accessors': accessors( xbuf ).accessors\n* };\n*\n* // Perform reduction:\n* var out = blockedincludes7d( x, 6.0 );\n* // returns true\n*\n* out = blockedincludes7d( x, 100.0 );\n* // returns false\n*/\nfunction blockedincludes7d( x, value ) { // eslint-disable-line max-statements\n\tvar bsize;\n\tvar xbuf;\n\tvar get;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar dx6;\n\tvar ox1;\n\tvar ox2;\n\tvar ox3;\n\tvar ox4;\n\tvar ox5;\n\tvar ox6;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar s2;\n\tvar s3;\n\tvar s4;\n\tvar s5;\n\tvar s6;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar i6;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar j3;\n\tvar j4;\n\tvar j5;\n\tvar j6;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Cache accessor:\n\tget = x.accessors[0];\n\n\t// Iterate over blocks...\n\tfor ( j6 = sh[6]; j6 > 0; ) {\n\t\tif ( j6 < bsize ) {\n\t\t\ts6 = j6;\n\t\t\tj6 = 0;\n\t\t} else {\n\t\t\ts6 = bsize;\n\t\t\tj6 -= bsize;\n\t\t}\n\t\tox6 = ox + ( j6*sx[6] );\n\t\tfor ( j5 = sh[5]; j5 > 0; ) {\n\t\t\tif ( j5 < bsize ) {\n\t\t\t\ts5 = j5;\n\t\t\t\tj5 = 0;\n\t\t\t} else {\n\t\t\t\ts5 = bsize;\n\t\t\t\tj5 -= bsize;\n\t\t\t}\n\t\t\tdx6 = sx[6] - ( s5*sx[5] );\n\t\t\tox5 = ox6 + ( j5*sx[5] );\n\t\t\tfor ( j4 = sh[4]; j4 > 0; ) {\n\t\t\t\tif ( j4 < bsize ) {\n\t\t\t\t\ts4 = j4;\n\t\t\t\t\tj4 = 0;\n\t\t\t\t} else {\n\t\t\t\t\ts4 = bsize;\n\t\t\t\t\tj4 -= bsize;\n\t\t\t\t}\n\t\t\t\tdx5 = sx[5] - ( s4*sx[4] );\n\t\t\t\tox4 = ox5 + ( j4*sx[4] );\n\t\t\t\tfor ( j3 = sh[3]; j3 > 0; ) {\n\t\t\t\t\tif ( j3 < bsize ) {\n\t\t\t\t\t\ts3 = j3;\n\t\t\t\t\t\tj3 = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts3 = bsize;\n\t\t\t\t\t\tj3 -= bsize;\n\t\t\t\t\t}\n\t\t\t\t\tdx4 = sx[4] - ( s3*sx[3] );\n\t\t\t\t\tox3 = ox4 + ( j3*sx[3] );\n\t\t\t\t\tfor ( j2 = sh[2]; j2 > 0; ) {\n\t\t\t\t\t\tif ( j2 < bsize ) {\n\t\t\t\t\t\t\ts2 = j2;\n\t\t\t\t\t\t\tj2 = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ts2 = bsize;\n\t\t\t\t\t\t\tj2 -= bsize;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdx3 = sx[3] - ( s2*sx[2] );\n\t\t\t\t\t\tox2 = ox3 + ( j2*sx[2] );\n\t\t\t\t\t\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\t\t\t\t\t\tif ( j1 < bsize ) {\n\t\t\t\t\t\t\t\ts1 = j1;\n\t\t\t\t\t\t\t\tj1 = 0;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ts1 = bsize;\n\t\t\t\t\t\t\t\tj1 -= bsize;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdx2 = sx[2] - ( s1*sx[1] );\n\t\t\t\t\t\t\tox1 = ox2 + ( j1*sx[1] );\n\t\t\t\t\t\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\t\t\t\t\t\tif ( j0 < bsize ) {\n\t\t\t\t\t\t\t\t\ts0 = j0;\n\t\t\t\t\t\t\t\t\tj0 = 0;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\ts0 = bsize;\n\t\t\t\t\t\t\t\t\tj0 -= bsize;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\t\t\t\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t\t\t\t\t\t// Compute the loop offset increment:\n\t\t\t\t\t\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t\t\t\t\t\t// Iterate over the ndarray dimensions...\n\t\t\t\t\t\t\t\tfor ( i6 = 0; i6 < s6; i6++ ) {\n\t\t\t\t\t\t\t\t\tfor ( i5 = 0; i5 < s5; i5++ ) {\n\t\t\t\t\t\t\t\t\t\tfor ( i4 = 0; i4 < s4; i4++ ) {\n\t\t\t\t\t\t\t\t\t\t\tfor ( i3 = 0; i3 < s3; i3++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\tfor ( i2 = 0; i2 < s2; i2++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif ( get( xbuf, ix ) === value ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn true;\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\t\t\t\t\t\tix += dx0;\n\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\tix += dx1;\n\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\tix += dx2;\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\tix += dx3;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tix += dx4;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tix += dx5;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tix += dx6;\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}\n\t\t}\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = blockedincludes7d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MODULES //\n\nvar loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' );\nvar blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' );\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {Array} x.accessors - data buffer accessors\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' );\n* var accessors = require( '@stdlib/array-base-accessors' );\n*\n* // Create a data buffer:\n* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 8, 8, 8, 8, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'generic',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major',\n* 'accessors': accessors( xbuf ).accessors\n* };\n*\n* // Perform reduction:\n* var out = blockedincludes8d( x, 6.0 );\n* // returns true\n*\n* out = blockedincludes8d( x, 100.0 );\n* // returns false\n*/\nfunction blockedincludes8d( x, value ) { // eslint-disable-line max-statements\n\tvar bsize;\n\tvar xbuf;\n\tvar get;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar dx6;\n\tvar dx7;\n\tvar ox1;\n\tvar ox2;\n\tvar ox3;\n\tvar ox4;\n\tvar ox5;\n\tvar ox6;\n\tvar ox7;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar s2;\n\tvar s3;\n\tvar s4;\n\tvar s5;\n\tvar s6;\n\tvar s7;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar i6;\n\tvar i7;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar j3;\n\tvar j4;\n\tvar j5;\n\tvar j6;\n\tvar j7;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Cache accessor:\n\tget = x.accessors[0];\n\n\t// Iterate over blocks...\n\tfor ( j7 = sh[7]; j7 > 0; ) {\n\t\tif ( j7 < bsize ) {\n\t\t\ts7 = j7;\n\t\t\tj7 = 0;\n\t\t} else {\n\t\t\ts7 = bsize;\n\t\t\tj7 -= bsize;\n\t\t}\n\t\tox7 = ox + ( j7*sx[7] );\n\t\tfor ( j6 = sh[6]; j6 > 0; ) {\n\t\t\tif ( j6 < bsize ) {\n\t\t\t\ts6 = j6;\n\t\t\t\tj6 = 0;\n\t\t\t} else {\n\t\t\t\ts6 = bsize;\n\t\t\t\tj6 -= bsize;\n\t\t\t}\n\t\t\tdx7 = sx[7] - ( s6*sx[6] );\n\t\t\tox6 = ox7 + ( j6*sx[6] );\n\t\t\tfor ( j5 = sh[5]; j5 > 0; ) {\n\t\t\t\tif ( j5 < bsize ) {\n\t\t\t\t\ts5 = j5;\n\t\t\t\t\tj5 = 0;\n\t\t\t\t} else {\n\t\t\t\t\ts5 = bsize;\n\t\t\t\t\tj5 -= bsize;\n\t\t\t\t}\n\t\t\t\tdx6 = sx[6] - ( s5*sx[5] );\n\t\t\t\tox5 = ox6 + ( j5*sx[5] );\n\t\t\t\tfor ( j4 = sh[4]; j4 > 0; ) {\n\t\t\t\t\tif ( j4 < bsize ) {\n\t\t\t\t\t\ts4 = j4;\n\t\t\t\t\t\tj4 = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts4 = bsize;\n\t\t\t\t\t\tj4 -= bsize;\n\t\t\t\t\t}\n\t\t\t\t\tdx5 = sx[5] - ( s4*sx[4] );\n\t\t\t\t\tox4 = ox5 + ( j4*sx[4] );\n\t\t\t\t\tfor ( j3 = sh[3]; j3 > 0; ) {\n\t\t\t\t\t\tif ( j3 < bsize ) {\n\t\t\t\t\t\t\ts3 = j3;\n\t\t\t\t\t\t\tj3 = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ts3 = bsize;\n\t\t\t\t\t\t\tj3 -= bsize;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdx4 = sx[4] - ( s3*sx[3] );\n\t\t\t\t\t\tox3 = ox4 + ( j3*sx[3] );\n\t\t\t\t\t\tfor ( j2 = sh[2]; j2 > 0; ) {\n\t\t\t\t\t\t\tif ( j2 < bsize ) {\n\t\t\t\t\t\t\t\ts2 = j2;\n\t\t\t\t\t\t\t\tj2 = 0;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ts2 = bsize;\n\t\t\t\t\t\t\t\tj2 -= bsize;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdx3 = sx[3] - ( s2*sx[2] );\n\t\t\t\t\t\t\tox2 = ox3 + ( j2*sx[2] );\n\t\t\t\t\t\t\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\t\t\t\t\t\t\tif ( j1 < bsize ) {\n\t\t\t\t\t\t\t\t\ts1 = j1;\n\t\t\t\t\t\t\t\t\tj1 = 0;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\ts1 = bsize;\n\t\t\t\t\t\t\t\t\tj1 -= bsize;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdx2 = sx[2] - ( s1*sx[1] );\n\t\t\t\t\t\t\t\tox1 = ox2 + ( j1*sx[1] );\n\t\t\t\t\t\t\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\t\t\t\t\t\t\tif ( j0 < bsize ) {\n\t\t\t\t\t\t\t\t\t\ts0 = j0;\n\t\t\t\t\t\t\t\t\t\tj0 = 0;\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\ts0 = bsize;\n\t\t\t\t\t\t\t\t\t\tj0 -= bsize;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\t\t\t\t\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t\t\t\t\t\t\t// Compute the loop offset increment:\n\t\t\t\t\t\t\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t\t\t\t\t\t\t// Iterate over the ndarray dimensions...\n\t\t\t\t\t\t\t\t\tfor ( i7 = 0; i7 < s7; i7++ ) {\n\t\t\t\t\t\t\t\t\t\tfor ( i6 = 0; i6 < s6; i6++ ) {\n\t\t\t\t\t\t\t\t\t\t\tfor ( i5 = 0; i5 < s5; i5++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\tfor ( i4 = 0; i4 < s4; i4++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i3 = 0; i3 < s3; i3++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i2 = 0; i2 < s2; i2++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif ( get( xbuf, ix ) === value ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn true;\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\t\t\t\t\t\t\t\t\t\tix += dx0;\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\t\t\t\t\t\t\tix += dx1;\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\t\t\t\t\t\tix += dx2;\n\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\tix += dx3;\n\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\tix += dx4;\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\tix += dx5;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tix += dx6;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tix += dx7;\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}\n\t\t}\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = blockedincludes8d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MODULES //\n\nvar loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' );\nvar blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' );\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {Array} x.accessors - data buffer accessors\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' );\n* var accessors = require( '@stdlib/array-base-accessors' );\n*\n* // Create a data buffer:\n* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 1, 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 8, 8, 8, 8, 8, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'generic',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major',\n* 'accessors': accessors( xbuf ).accessors\n* };\n*\n* // Perform reduction:\n* var out = blockedincludes9d( x, 6.0 );\n* // returns true\n*\n* out = blockedincludes9d( x, 100.0 );\n* // returns false\n*/\nfunction blockedincludes9d( x, value ) { // eslint-disable-line max-statements\n\tvar bsize;\n\tvar xbuf;\n\tvar get;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar dx6;\n\tvar dx7;\n\tvar dx8;\n\tvar ox1;\n\tvar ox2;\n\tvar ox3;\n\tvar ox4;\n\tvar ox5;\n\tvar ox6;\n\tvar ox7;\n\tvar ox8;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar s2;\n\tvar s3;\n\tvar s4;\n\tvar s5;\n\tvar s6;\n\tvar s7;\n\tvar s8;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar i6;\n\tvar i7;\n\tvar i8;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar j3;\n\tvar j4;\n\tvar j5;\n\tvar j6;\n\tvar j7;\n\tvar j8;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Cache accessor:\n\tget = x.accessors[0];\n\n\t// Iterate over blocks...\n\tfor ( j8 = sh[8]; j8 > 0; ) {\n\t\tif ( j8 < bsize ) {\n\t\t\ts8 = j8;\n\t\t\tj8 = 0;\n\t\t} else {\n\t\t\ts8 = bsize;\n\t\t\tj8 -= bsize;\n\t\t}\n\t\tox8 = ox + ( j8*sx[8] );\n\t\tfor ( j7 = sh[7]; j7 > 0; ) {\n\t\t\tif ( j7 < bsize ) {\n\t\t\t\ts7 = j7;\n\t\t\t\tj7 = 0;\n\t\t\t} else {\n\t\t\t\ts7 = bsize;\n\t\t\t\tj7 -= bsize;\n\t\t\t}\n\t\t\tdx8 = sx[8] - ( s7*sx[7] );\n\t\t\tox7 = ox8 + ( j7*sx[7] );\n\t\t\tfor ( j6 = sh[6]; j6 > 0; ) {\n\t\t\t\tif ( j6 < bsize ) {\n\t\t\t\t\ts6 = j6;\n\t\t\t\t\tj6 = 0;\n\t\t\t\t} else {\n\t\t\t\t\ts6 = bsize;\n\t\t\t\t\tj6 -= bsize;\n\t\t\t\t}\n\t\t\t\tdx7 = sx[7] - ( s6*sx[6] );\n\t\t\t\tox6 = ox7 + ( j6*sx[6] );\n\t\t\t\tfor ( j5 = sh[5]; j5 > 0; ) {\n\t\t\t\t\tif ( j5 < bsize ) {\n\t\t\t\t\t\ts5 = j5;\n\t\t\t\t\t\tj5 = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts5 = bsize;\n\t\t\t\t\t\tj5 -= bsize;\n\t\t\t\t\t}\n\t\t\t\t\tdx6 = sx[6] - ( s5*sx[5] );\n\t\t\t\t\tox5 = ox6 + ( j5*sx[5] );\n\t\t\t\t\tfor ( j4 = sh[4]; j4 > 0; ) {\n\t\t\t\t\t\tif ( j4 < bsize ) {\n\t\t\t\t\t\t\ts4 = j4;\n\t\t\t\t\t\t\tj4 = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ts4 = bsize;\n\t\t\t\t\t\t\tj4 -= bsize;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdx5 = sx[5] - ( s4*sx[4] );\n\t\t\t\t\t\tox4 = ox5 + ( j4*sx[4] );\n\t\t\t\t\t\tfor ( j3 = sh[3]; j3 > 0; ) {\n\t\t\t\t\t\t\tif ( j3 < bsize ) {\n\t\t\t\t\t\t\t\ts3 = j3;\n\t\t\t\t\t\t\t\tj3 = 0;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ts3 = bsize;\n\t\t\t\t\t\t\t\tj3 -= bsize;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdx4 = sx[4] - ( s3*sx[3] );\n\t\t\t\t\t\t\tox3 = ox4 + ( j3*sx[3] );\n\t\t\t\t\t\t\tfor ( j2 = sh[2]; j2 > 0; ) {\n\t\t\t\t\t\t\t\tif ( j2 < bsize ) {\n\t\t\t\t\t\t\t\t\ts2 = j2;\n\t\t\t\t\t\t\t\t\tj2 = 0;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\ts2 = bsize;\n\t\t\t\t\t\t\t\t\tj2 -= bsize;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdx3 = sx[3] - ( s2*sx[2] );\n\t\t\t\t\t\t\t\tox2 = ox3 + ( j2*sx[2] );\n\t\t\t\t\t\t\t\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\t\t\t\t\t\t\t\tif ( j1 < bsize ) {\n\t\t\t\t\t\t\t\t\t\ts1 = j1;\n\t\t\t\t\t\t\t\t\t\tj1 = 0;\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\ts1 = bsize;\n\t\t\t\t\t\t\t\t\t\tj1 -= bsize;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tdx2 = sx[2] - ( s1*sx[1] );\n\t\t\t\t\t\t\t\t\tox1 = ox2 + ( j1*sx[1] );\n\t\t\t\t\t\t\t\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\t\t\t\t\t\t\t\tif ( j0 < bsize ) {\n\t\t\t\t\t\t\t\t\t\t\ts0 = j0;\n\t\t\t\t\t\t\t\t\t\t\tj0 = 0;\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\ts0 = bsize;\n\t\t\t\t\t\t\t\t\t\t\tj0 -= bsize;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\t\t\t\t\t\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t\t\t\t\t\t\t\t// Compute the loop offset increment:\n\t\t\t\t\t\t\t\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t\t\t\t\t\t\t\t// Iterate over the ndarray dimensions...\n\t\t\t\t\t\t\t\t\t\tfor ( i8 = 0; i8 < s8; i8++ ) {\n\t\t\t\t\t\t\t\t\t\t\tfor ( i7 = 0; i7 < s7; i7++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\tfor ( i6 = 0; i6 < s6; i6++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i5 = 0; i5 < s5; i5++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i4 = 0; i4 < s4; i4++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i3 = 0; i3 < s3; i3++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i2 = 0; i2 < s2; i2++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif ( get( xbuf, ix ) === value ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn true;\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\t\t\t\t\t\t\t\t\tix += dx0;\n\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\tix += dx1;\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\t\t\t\t\t\t\t\t\t\tix += dx2;\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\t\t\t\t\t\t\tix += dx3;\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\t\t\t\t\t\tix += dx4;\n\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\tix += dx5;\n\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\tix += dx6;\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\tix += dx7;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tix += dx8;\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}\n\t\t}\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = blockedincludes9d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MODULES //\n\nvar loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' );\nvar blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' );\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {Array} x.accessors - data buffer accessors\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' );\n* var accessors = require( '@stdlib/array-base-accessors' );\n*\n* // Create a data buffer:\n* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 1, 1, 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 8, 8, 8, 8, 8, 8, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'generic',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major',\n* 'accessors': accessors( xbuf ).accessors\n* };\n*\n* // Perform reduction:\n* var out = blockedincludes10d( x, 6.0 );\n* // returns true\n*\n* out = blockedincludes10d( x, 100.0 );\n* // returns false\n*/\nfunction blockedincludes10d( x, value ) { // eslint-disable-line max-statements, max-lines-per-function\n\tvar bsize;\n\tvar xbuf;\n\tvar get;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar dx6;\n\tvar dx7;\n\tvar dx8;\n\tvar dx9;\n\tvar ox1;\n\tvar ox2;\n\tvar ox3;\n\tvar ox4;\n\tvar ox5;\n\tvar ox6;\n\tvar ox7;\n\tvar ox8;\n\tvar ox9;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar s2;\n\tvar s3;\n\tvar s4;\n\tvar s5;\n\tvar s6;\n\tvar s7;\n\tvar s8;\n\tvar s9;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar i6;\n\tvar i7;\n\tvar i8;\n\tvar i9;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar j3;\n\tvar j4;\n\tvar j5;\n\tvar j6;\n\tvar j7;\n\tvar j8;\n\tvar j9;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Cache accessor:\n\tget = x.accessors[0];\n\n\t// Iterate over blocks...\n\tfor ( j9 = sh[9]; j9 > 0; ) {\n\t\tif ( j9 < bsize ) {\n\t\t\ts9 = j9;\n\t\t\tj9 = 0;\n\t\t} else {\n\t\t\ts9 = bsize;\n\t\t\tj9 -= bsize;\n\t\t}\n\t\tox9 = ox + ( j9*sx[9] );\n\t\tfor ( j8 = sh[8]; j8 > 0; ) {\n\t\t\tif ( j8 < bsize ) {\n\t\t\t\ts8 = j8;\n\t\t\t\tj8 = 0;\n\t\t\t} else {\n\t\t\t\ts8 = bsize;\n\t\t\t\tj8 -= bsize;\n\t\t\t}\n\t\t\tdx9 = sx[9] - ( s8*sx[8] );\n\t\t\tox8 = ox9 + ( j8*sx[8] );\n\t\t\tfor ( j7 = sh[7]; j7 > 0; ) {\n\t\t\t\tif ( j7 < bsize ) {\n\t\t\t\t\ts7 = j7;\n\t\t\t\t\tj7 = 0;\n\t\t\t\t} else {\n\t\t\t\t\ts7 = bsize;\n\t\t\t\t\tj7 -= bsize;\n\t\t\t\t}\n\t\t\t\tdx8 = sx[8] - ( s7*sx[7] );\n\t\t\t\tox7 = ox8 + ( j7*sx[7] );\n\t\t\t\tfor ( j6 = sh[6]; j6 > 0; ) {\n\t\t\t\t\tif ( j6 < bsize ) {\n\t\t\t\t\t\ts6 = j6;\n\t\t\t\t\t\tj6 = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts6 = bsize;\n\t\t\t\t\t\tj6 -= bsize;\n\t\t\t\t\t}\n\t\t\t\t\tdx7 = sx[7] - ( s6*sx[6] );\n\t\t\t\t\tox6 = ox7 + ( j6*sx[6] );\n\t\t\t\t\tfor ( j5 = sh[5]; j5 > 0; ) {\n\t\t\t\t\t\tif ( j5 < bsize ) {\n\t\t\t\t\t\t\ts5 = j5;\n\t\t\t\t\t\t\tj5 = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ts5 = bsize;\n\t\t\t\t\t\t\tj5 -= bsize;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdx6 = sx[6] - ( s5*sx[5] );\n\t\t\t\t\t\tox5 = ox6 + ( j5*sx[5] );\n\t\t\t\t\t\tfor ( j4 = sh[4]; j4 > 0; ) {\n\t\t\t\t\t\t\tif ( j4 < bsize ) {\n\t\t\t\t\t\t\t\ts4 = j4;\n\t\t\t\t\t\t\t\tj4 = 0;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ts4 = bsize;\n\t\t\t\t\t\t\t\tj4 -= bsize;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdx5 = sx[5] - ( s4*sx[4] );\n\t\t\t\t\t\t\tox4 = ox5 + ( j4*sx[4] );\n\t\t\t\t\t\t\tfor ( j3 = sh[3]; j3 > 0; ) {\n\t\t\t\t\t\t\t\tif ( j3 < bsize ) {\n\t\t\t\t\t\t\t\t\ts3 = j3;\n\t\t\t\t\t\t\t\t\tj3 = 0;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\ts3 = bsize;\n\t\t\t\t\t\t\t\t\tj3 -= bsize;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdx4 = sx[4] - ( s3*sx[3] );\n\t\t\t\t\t\t\t\tox3 = ox4 + ( j3*sx[3] );\n\t\t\t\t\t\t\t\tfor ( j2 = sh[2]; j2 > 0; ) {\n\t\t\t\t\t\t\t\t\tif ( j2 < bsize ) {\n\t\t\t\t\t\t\t\t\t\ts2 = j2;\n\t\t\t\t\t\t\t\t\t\tj2 = 0;\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\ts2 = bsize;\n\t\t\t\t\t\t\t\t\t\tj2 -= bsize;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tdx3 = sx[3] - ( s2*sx[2] );\n\t\t\t\t\t\t\t\t\tox2 = ox3 + ( j2*sx[2] );\n\t\t\t\t\t\t\t\t\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\t\t\t\t\t\t\t\t\tif ( j1 < bsize ) {\n\t\t\t\t\t\t\t\t\t\t\ts1 = j1;\n\t\t\t\t\t\t\t\t\t\t\tj1 = 0;\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\ts1 = bsize;\n\t\t\t\t\t\t\t\t\t\t\tj1 -= bsize;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tdx2 = sx[2] - ( s1*sx[1] );\n\t\t\t\t\t\t\t\t\t\tox1 = ox2 + ( j1*sx[1] );\n\t\t\t\t\t\t\t\t\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\t\t\t\t\t\t\t\t\tif ( j0 < bsize ) {\n\t\t\t\t\t\t\t\t\t\t\t\ts0 = j0;\n\t\t\t\t\t\t\t\t\t\t\t\tj0 = 0;\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\ts0 = bsize;\n\t\t\t\t\t\t\t\t\t\t\t\tj0 -= bsize;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\t\t\t\t\t\t\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t\t\t\t\t\t\t\t\t// Compute the loop offset increment:\n\t\t\t\t\t\t\t\t\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t\t\t\t\t\t\t\t\t// Iterate over the ndarray dimensions...\n\t\t\t\t\t\t\t\t\t\t\tfor ( i9 = 0; i9 < s9; i9++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\tfor ( i8 = 0; i8 < s8; i8++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i7 = 0; i7 < s7; i7++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i6 = 0; i6 < s6; i6++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i5 = 0; i5 < s5; i5++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i4 = 0; i4 < s4; i4++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i3 = 0; i3 < s3; i3++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i2 = 0; i2 < s2; i2++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif ( get( xbuf, ix ) === value ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn true;\n\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\tix += dx0;\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\t\t\t\t\t\t\t\t\t\t\t\t\t\tix += dx1;\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\t\t\t\t\t\t\t\t\tix += dx2;\n\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\tix += dx3;\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\t\t\t\t\t\t\t\t\t\tix += dx4;\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\t\t\t\t\t\t\tix += dx5;\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\t\t\t\t\t\tix += dx6;\n\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\tix += dx7;\n\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\tix += dx8;\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\tix += dx9;\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\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\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = blockedincludes10d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' );\nvar blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' );\n\n\n// MAIN //\n\n/**\n* Tests whether a reinterpreted complex number ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {ComplexLike} value - search element\n* @returns {boolean} result\n*\n* @example\n* var Float64Array = require( '@stdlib/array-float64' );\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 4, 2 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'complex128',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var v = {\n* 're': 3.0,\n* 'im': 4.0\n* };\n* var out = blockedincludes2d( x, v );\n* // returns true\n*\n* v = {\n* 're': -3.0,\n* 'im': -4.0\n* };\n* out = blockedincludes2d( x, v );\n* // returns false\n*/\nfunction blockedincludes2d( x, value ) {\n\tvar bsize;\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar ox1;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar j0;\n\tvar j1;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Iterate over blocks...\n\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\tif ( j1 < bsize ) {\n\t\t\ts1 = j1;\n\t\t\tj1 = 0;\n\t\t} else {\n\t\t\ts1 = bsize;\n\t\t\tj1 -= bsize;\n\t\t}\n\t\tox1 = ox + ( j1*sx[1] );\n\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\tif ( j0 < bsize ) {\n\t\t\t\ts0 = j0;\n\t\t\t\tj0 = 0;\n\t\t\t} else {\n\t\t\t\ts0 = bsize;\n\t\t\t\tj0 -= bsize;\n\t\t\t}\n\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t// Compute the loop offset increment:\n\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t// Iterate over the ndarray dimensions...\n\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\tif ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) { // eslint-disable-line max-len\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx0;\n\t\t\t\t}\n\t\t\t\tix += dx1;\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = blockedincludes2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MODULES //\n\nvar loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' );\nvar blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' );\n\n\n// MAIN //\n\n/**\n* Tests whether a reinterpreted complex number ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {ComplexLike} value - search element\n* @returns {boolean} result\n*\n* @example\n* var Float64Array = require( '@stdlib/array-float64' );\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 4, 2 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'complex128',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var v = {\n* 're': 3.0,\n* 'im': 4.0\n* };\n* var out = blockedincludes3d( x, v );\n* // returns true\n*\n* v = {\n* 're': -3.0,\n* 'im': -4.0\n* };\n* out = blockedincludes3d( x, v );\n* // returns false\n*/\nfunction blockedincludes3d( x, value ) {\n\tvar bsize;\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar ox1;\n\tvar ox2;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar s2;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Iterate over blocks...\n\tfor ( j2 = sh[2]; j2 > 0; ) {\n\t\tif ( j2 < bsize ) {\n\t\t\ts2 = j2;\n\t\t\tj2 = 0;\n\t\t} else {\n\t\t\ts2 = bsize;\n\t\t\tj2 -= bsize;\n\t\t}\n\t\tox2 = ox + ( j2*sx[2] );\n\t\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\t\tif ( j1 < bsize ) {\n\t\t\t\ts1 = j1;\n\t\t\t\tj1 = 0;\n\t\t\t} else {\n\t\t\t\ts1 = bsize;\n\t\t\t\tj1 -= bsize;\n\t\t\t}\n\t\t\tdx2 = sx[2] - ( s1*sx[1] );\n\t\t\tox1 = ox2 + ( j1*sx[1] );\n\t\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\t\tif ( j0 < bsize ) {\n\t\t\t\t\ts0 = j0;\n\t\t\t\t\tj0 = 0;\n\t\t\t\t} else {\n\t\t\t\t\ts0 = bsize;\n\t\t\t\t\tj0 -= bsize;\n\t\t\t\t}\n\t\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t\t// Compute the loop offset increment:\n\t\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t\t// Iterate over the ndarray dimensions...\n\t\t\t\tfor ( i2 = 0; i2 < s2; i2++ ) {\n\t\t\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\t\t\tif ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tix += dx1;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx2;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = blockedincludes3d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MODULES //\n\nvar loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' );\nvar blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' );\n\n\n// MAIN //\n\n/**\n* Tests whether a reinterpreted complex number ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {ComplexLike} value - search element\n* @returns {boolean} result\n*\n* @example\n* var Float64Array = require( '@stdlib/array-float64' );\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 4, 2 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'complex128',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var v = {\n* 're': 3.0,\n* 'im': 4.0\n* };\n* var out = blockedincludes4d( x, v );\n* // returns true\n*\n* v = {\n* 're': -3.0,\n* 'im': -4.0\n* };\n* out = blockedincludes4d( x, v );\n* // returns false\n*/\nfunction blockedincludes4d( x, value ) {\n\tvar bsize;\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar ox1;\n\tvar ox2;\n\tvar ox3;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar s2;\n\tvar s3;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar j3;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Iterate over blocks...\n\tfor ( j3 = sh[3]; j3 > 0; ) {\n\t\tif ( j3 < bsize ) {\n\t\t\ts3 = j3;\n\t\t\tj3 = 0;\n\t\t} else {\n\t\t\ts3 = bsize;\n\t\t\tj3 -= bsize;\n\t\t}\n\t\tox3 = ox + ( j3*sx[3] );\n\t\tfor ( j2 = sh[2]; j2 > 0; ) {\n\t\t\tif ( j2 < bsize ) {\n\t\t\t\ts2 = j2;\n\t\t\t\tj2 = 0;\n\t\t\t} else {\n\t\t\t\ts2 = bsize;\n\t\t\t\tj2 -= bsize;\n\t\t\t}\n\t\t\tdx3 = sx[3] - ( s2*sx[2] );\n\t\t\tox2 = ox3 + ( j2*sx[2] );\n\t\t\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\t\t\tif ( j1 < bsize ) {\n\t\t\t\t\ts1 = j1;\n\t\t\t\t\tj1 = 0;\n\t\t\t\t} else {\n\t\t\t\t\ts1 = bsize;\n\t\t\t\t\tj1 -= bsize;\n\t\t\t\t}\n\t\t\t\tdx2 = sx[2] - ( s1*sx[1] );\n\t\t\t\tox1 = ox2 + ( j1*sx[1] );\n\t\t\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\t\t\tif ( j0 < bsize ) {\n\t\t\t\t\t\ts0 = j0;\n\t\t\t\t\t\tj0 = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts0 = bsize;\n\t\t\t\t\t\tj0 -= bsize;\n\t\t\t\t\t}\n\t\t\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t\t\t// Compute the loop offset increment:\n\t\t\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t\t\t// Iterate over the ndarray dimensions...\n\t\t\t\t\tfor ( i3 = 0; i3 < s3; i3++ ) {\n\t\t\t\t\t\tfor ( i2 = 0; i2 < s2; i2++ ) {\n\t\t\t\t\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\t\t\t\t\tif ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) {\n\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tix += dx1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tix += dx2;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tix += dx3;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = blockedincludes4d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MODULES //\n\nvar loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' );\nvar blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' );\n\n\n// MAIN //\n\n/**\n* Tests whether a reinterpreted complex number ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {ComplexLike} value - search element\n* @returns {boolean} result\n*\n* @example\n* var Float64Array = require( '@stdlib/array-float64' );\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 8, 4, 2 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'complex128',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var v = {\n* 're': 3.0,\n* 'im': 4.0\n* };\n* var out = blockedincludes5d( x, v );\n* // returns true\n*\n* v = {\n* 're': -3.0,\n* 'im': -4.0\n* };\n* out = blockedincludes5d( x, v );\n* // returns false\n*/\nfunction blockedincludes5d( x, value ) {\n\tvar bsize;\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar ox1;\n\tvar ox2;\n\tvar ox3;\n\tvar ox4;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar s2;\n\tvar s3;\n\tvar s4;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar j3;\n\tvar j4;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Iterate over blocks...\n\tfor ( j4 = sh[4]; j4 > 0; ) {\n\t\tif ( j4 < bsize ) {\n\t\t\ts4 = j4;\n\t\t\tj4 = 0;\n\t\t} else {\n\t\t\ts4 = bsize;\n\t\t\tj4 -= bsize;\n\t\t}\n\t\tox4 = ox + ( j4*sx[4] );\n\t\tfor ( j3 = sh[3]; j3 > 0; ) {\n\t\t\tif ( j3 < bsize ) {\n\t\t\t\ts3 = j3;\n\t\t\t\tj3 = 0;\n\t\t\t} else {\n\t\t\t\ts3 = bsize;\n\t\t\t\tj3 -= bsize;\n\t\t\t}\n\t\t\tdx4 = sx[4] - ( s3*sx[3] );\n\t\t\tox3 = ox4 + ( j3*sx[3] );\n\t\t\tfor ( j2 = sh[2]; j2 > 0; ) {\n\t\t\t\tif ( j2 < bsize ) {\n\t\t\t\t\ts2 = j2;\n\t\t\t\t\tj2 = 0;\n\t\t\t\t} else {\n\t\t\t\t\ts2 = bsize;\n\t\t\t\t\tj2 -= bsize;\n\t\t\t\t}\n\t\t\t\tdx3 = sx[3] - ( s2*sx[2] );\n\t\t\t\tox2 = ox3 + ( j2*sx[2] );\n\t\t\t\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\t\t\t\tif ( j1 < bsize ) {\n\t\t\t\t\t\ts1 = j1;\n\t\t\t\t\t\tj1 = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts1 = bsize;\n\t\t\t\t\t\tj1 -= bsize;\n\t\t\t\t\t}\n\t\t\t\t\tdx2 = sx[2] - ( s1*sx[1] );\n\t\t\t\t\tox1 = ox2 + ( j1*sx[1] );\n\t\t\t\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\t\t\t\tif ( j0 < bsize ) {\n\t\t\t\t\t\t\ts0 = j0;\n\t\t\t\t\t\t\tj0 = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ts0 = bsize;\n\t\t\t\t\t\t\tj0 -= bsize;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\t\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t\t\t\t// Compute the loop offset increment:\n\t\t\t\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t\t\t\t// Iterate over the ndarray dimensions...\n\t\t\t\t\t\tfor ( i4 = 0; i4 < s4; i4++ ) {\n\t\t\t\t\t\t\tfor ( i3 = 0; i3 < s3; i3++ ) {\n\t\t\t\t\t\t\t\tfor ( i2 = 0; i2 < s2; i2++ ) {\n\t\t\t\t\t\t\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\t\t\t\t\t\t\tif ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tix += dx1;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tix += dx2;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tix += dx3;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tix += dx4;\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\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = blockedincludes5d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MODULES //\n\nvar loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' );\nvar blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' );\n\n\n// MAIN //\n\n/**\n* Tests whether a reinterpreted complex number ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {ComplexLike} value - search element\n* @returns {boolean} result\n*\n* @example\n* var Float64Array = require( '@stdlib/array-float64' );\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 8, 8, 4, 2 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'complex128',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var v = {\n* 're': 3.0,\n* 'im': 4.0\n* };\n* var out = blockedincludes6d( x, v );\n* // returns true\n*\n* v = {\n* 're': -3.0,\n* 'im': -4.0\n* };\n* out = blockedincludes6d( x, v );\n* // returns false\n*/\nfunction blockedincludes6d( x, value ) { // eslint-disable-line max-statements\n\tvar bsize;\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar ox1;\n\tvar ox2;\n\tvar ox3;\n\tvar ox4;\n\tvar ox5;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar s2;\n\tvar s3;\n\tvar s4;\n\tvar s5;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar j3;\n\tvar j4;\n\tvar j5;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Iterate over blocks...\n\tfor ( j5 = sh[5]; j5 > 0; ) {\n\t\tif ( j5 < bsize ) {\n\t\t\ts5 = j5;\n\t\t\tj5 = 0;\n\t\t} else {\n\t\t\ts5 = bsize;\n\t\t\tj5 -= bsize;\n\t\t}\n\t\tox5 = ox + ( j5*sx[5] );\n\t\tfor ( j4 = sh[4]; j4 > 0; ) {\n\t\t\tif ( j4 < bsize ) {\n\t\t\t\ts4 = j4;\n\t\t\t\tj4 = 0;\n\t\t\t} else {\n\t\t\t\ts4 = bsize;\n\t\t\t\tj4 -= bsize;\n\t\t\t}\n\t\t\tdx5 = sx[5] - ( s4*sx[4] );\n\t\t\tox4 = ox5 + ( j4*sx[4] );\n\t\t\tfor ( j3 = sh[3]; j3 > 0; ) {\n\t\t\t\tif ( j3 < bsize ) {\n\t\t\t\t\ts3 = j3;\n\t\t\t\t\tj3 = 0;\n\t\t\t\t} else {\n\t\t\t\t\ts3 = bsize;\n\t\t\t\t\tj3 -= bsize;\n\t\t\t\t}\n\t\t\t\tdx4 = sx[4] - ( s3*sx[3] );\n\t\t\t\tox3 = ox4 + ( j3*sx[3] );\n\t\t\t\tfor ( j2 = sh[2]; j2 > 0; ) {\n\t\t\t\t\tif ( j2 < bsize ) {\n\t\t\t\t\t\ts2 = j2;\n\t\t\t\t\t\tj2 = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts2 = bsize;\n\t\t\t\t\t\tj2 -= bsize;\n\t\t\t\t\t}\n\t\t\t\t\tdx3 = sx[3] - ( s2*sx[2] );\n\t\t\t\t\tox2 = ox3 + ( j2*sx[2] );\n\t\t\t\t\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\t\t\t\t\tif ( j1 < bsize ) {\n\t\t\t\t\t\t\ts1 = j1;\n\t\t\t\t\t\t\tj1 = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ts1 = bsize;\n\t\t\t\t\t\t\tj1 -= bsize;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdx2 = sx[2] - ( s1*sx[1] );\n\t\t\t\t\t\tox1 = ox2 + ( j1*sx[1] );\n\t\t\t\t\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\t\t\t\t\tif ( j0 < bsize ) {\n\t\t\t\t\t\t\t\ts0 = j0;\n\t\t\t\t\t\t\t\tj0 = 0;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ts0 = bsize;\n\t\t\t\t\t\t\t\tj0 -= bsize;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\t\t\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t\t\t\t\t// Compute the loop offset increment:\n\t\t\t\t\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t\t\t\t\t// Iterate over the ndarray dimensions...\n\t\t\t\t\t\t\tfor ( i5 = 0; i5 < s5; i5++ ) {\n\t\t\t\t\t\t\t\tfor ( i4 = 0; i4 < s4; i4++ ) {\n\t\t\t\t\t\t\t\t\tfor ( i3 = 0; i3 < s3; i3++ ) {\n\t\t\t\t\t\t\t\t\t\tfor ( i2 = 0; i2 < s2; i2++ ) {\n\t\t\t\t\t\t\t\t\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tif ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn true;\n\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\tix += dx0;\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\tix += dx1;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tix += dx2;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tix += dx3;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tix += dx4;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tix += dx5;\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}\n\t\t}\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = blockedincludes6d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MODULES //\n\nvar loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' );\nvar blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' );\n\n\n// MAIN //\n\n/**\n* Tests whether a reinterpreted complex number ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {ComplexLike} value - search element\n* @returns {boolean} result\n*\n* @example\n* var Float64Array = require( '@stdlib/array-float64' );\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 8, 8, 8, 4, 2 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'complex128',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var v = {\n* 're': 3.0,\n* 'im': 4.0\n* };\n* var out = blockedincludes7d( x, v );\n* // returns true\n*\n* v = {\n* 're': -3.0,\n* 'im': -4.0\n* };\n* out = blockedincludes7d( x, v );\n* // returns false\n*/\nfunction blockedincludes7d( x, value ) { // eslint-disable-line max-statements\n\tvar bsize;\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar dx6;\n\tvar ox1;\n\tvar ox2;\n\tvar ox3;\n\tvar ox4;\n\tvar ox5;\n\tvar ox6;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar s2;\n\tvar s3;\n\tvar s4;\n\tvar s5;\n\tvar s6;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar i6;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar j3;\n\tvar j4;\n\tvar j5;\n\tvar j6;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Iterate over blocks...\n\tfor ( j6 = sh[6]; j6 > 0; ) {\n\t\tif ( j6 < bsize ) {\n\t\t\ts6 = j6;\n\t\t\tj6 = 0;\n\t\t} else {\n\t\t\ts6 = bsize;\n\t\t\tj6 -= bsize;\n\t\t}\n\t\tox6 = ox + ( j6*sx[6] );\n\t\tfor ( j5 = sh[5]; j5 > 0; ) {\n\t\t\tif ( j5 < bsize ) {\n\t\t\t\ts5 = j5;\n\t\t\t\tj5 = 0;\n\t\t\t} else {\n\t\t\t\ts5 = bsize;\n\t\t\t\tj5 -= bsize;\n\t\t\t}\n\t\t\tdx6 = sx[6] - ( s5*sx[5] );\n\t\t\tox5 = ox6 + ( j5*sx[5] );\n\t\t\tfor ( j4 = sh[4]; j4 > 0; ) {\n\t\t\t\tif ( j4 < bsize ) {\n\t\t\t\t\ts4 = j4;\n\t\t\t\t\tj4 = 0;\n\t\t\t\t} else {\n\t\t\t\t\ts4 = bsize;\n\t\t\t\t\tj4 -= bsize;\n\t\t\t\t}\n\t\t\t\tdx5 = sx[5] - ( s4*sx[4] );\n\t\t\t\tox4 = ox5 + ( j4*sx[4] );\n\t\t\t\tfor ( j3 = sh[3]; j3 > 0; ) {\n\t\t\t\t\tif ( j3 < bsize ) {\n\t\t\t\t\t\ts3 = j3;\n\t\t\t\t\t\tj3 = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts3 = bsize;\n\t\t\t\t\t\tj3 -= bsize;\n\t\t\t\t\t}\n\t\t\t\t\tdx4 = sx[4] - ( s3*sx[3] );\n\t\t\t\t\tox3 = ox4 + ( j3*sx[3] );\n\t\t\t\t\tfor ( j2 = sh[2]; j2 > 0; ) {\n\t\t\t\t\t\tif ( j2 < bsize ) {\n\t\t\t\t\t\t\ts2 = j2;\n\t\t\t\t\t\t\tj2 = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ts2 = bsize;\n\t\t\t\t\t\t\tj2 -= bsize;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdx3 = sx[3] - ( s2*sx[2] );\n\t\t\t\t\t\tox2 = ox3 + ( j2*sx[2] );\n\t\t\t\t\t\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\t\t\t\t\t\tif ( j1 < bsize ) {\n\t\t\t\t\t\t\t\ts1 = j1;\n\t\t\t\t\t\t\t\tj1 = 0;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ts1 = bsize;\n\t\t\t\t\t\t\t\tj1 -= bsize;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdx2 = sx[2] - ( s1*sx[1] );\n\t\t\t\t\t\t\tox1 = ox2 + ( j1*sx[1] );\n\t\t\t\t\t\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\t\t\t\t\t\tif ( j0 < bsize ) {\n\t\t\t\t\t\t\t\t\ts0 = j0;\n\t\t\t\t\t\t\t\t\tj0 = 0;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\ts0 = bsize;\n\t\t\t\t\t\t\t\t\tj0 -= bsize;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\t\t\t\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t\t\t\t\t\t// Compute the loop offset increment:\n\t\t\t\t\t\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t\t\t\t\t\t// Iterate over the ndarray dimensions...\n\t\t\t\t\t\t\t\tfor ( i6 = 0; i6 < s6; i6++ ) {\n\t\t\t\t\t\t\t\t\tfor ( i5 = 0; i5 < s5; i5++ ) {\n\t\t\t\t\t\t\t\t\t\tfor ( i4 = 0; i4 < s4; i4++ ) {\n\t\t\t\t\t\t\t\t\t\t\tfor ( i3 = 0; i3 < s3; i3++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\tfor ( i2 = 0; i2 < s2; i2++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn true;\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\t\t\t\t\t\tix += dx0;\n\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\tix += dx1;\n\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\tix += dx2;\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\tix += dx3;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tix += dx4;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tix += dx5;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tix += dx6;\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}\n\t\t}\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = blockedincludes7d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MODULES //\n\nvar loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' );\nvar blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' );\n\n\n// MAIN //\n\n/**\n* Tests whether a reinterpreted complex number ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {ComplexLike} value - search element\n* @returns {boolean} result\n*\n* @example\n* var Float64Array = require( '@stdlib/array-float64' );\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 8, 8, 8, 8, 4, 2 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'complex128',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var v = {\n* 're': 3.0,\n* 'im': 4.0\n* };\n* var out = blockedincludes8d( x, v );\n* // returns true\n*\n* v = {\n* 're': -3.0,\n* 'im': -4.0\n* };\n* out = blockedincludes8d( x, v );\n* // returns false\n*/\nfunction blockedincludes8d( x, value ) { // eslint-disable-line max-statements\n\tvar bsize;\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar dx6;\n\tvar dx7;\n\tvar ox1;\n\tvar ox2;\n\tvar ox3;\n\tvar ox4;\n\tvar ox5;\n\tvar ox6;\n\tvar ox7;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar s2;\n\tvar s3;\n\tvar s4;\n\tvar s5;\n\tvar s6;\n\tvar s7;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar i6;\n\tvar i7;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar j3;\n\tvar j4;\n\tvar j5;\n\tvar j6;\n\tvar j7;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Iterate over blocks...\n\tfor ( j7 = sh[7]; j7 > 0; ) {\n\t\tif ( j7 < bsize ) {\n\t\t\ts7 = j7;\n\t\t\tj7 = 0;\n\t\t} else {\n\t\t\ts7 = bsize;\n\t\t\tj7 -= bsize;\n\t\t}\n\t\tox7 = ox + ( j7*sx[7] );\n\t\tfor ( j6 = sh[6]; j6 > 0; ) {\n\t\t\tif ( j6 < bsize ) {\n\t\t\t\ts6 = j6;\n\t\t\t\tj6 = 0;\n\t\t\t} else {\n\t\t\t\ts6 = bsize;\n\t\t\t\tj6 -= bsize;\n\t\t\t}\n\t\t\tdx7 = sx[7] - ( s6*sx[6] );\n\t\t\tox6 = ox7 + ( j6*sx[6] );\n\t\t\tfor ( j5 = sh[5]; j5 > 0; ) {\n\t\t\t\tif ( j5 < bsize ) {\n\t\t\t\t\ts5 = j5;\n\t\t\t\t\tj5 = 0;\n\t\t\t\t} else {\n\t\t\t\t\ts5 = bsize;\n\t\t\t\t\tj5 -= bsize;\n\t\t\t\t}\n\t\t\t\tdx6 = sx[6] - ( s5*sx[5] );\n\t\t\t\tox5 = ox6 + ( j5*sx[5] );\n\t\t\t\tfor ( j4 = sh[4]; j4 > 0; ) {\n\t\t\t\t\tif ( j4 < bsize ) {\n\t\t\t\t\t\ts4 = j4;\n\t\t\t\t\t\tj4 = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts4 = bsize;\n\t\t\t\t\t\tj4 -= bsize;\n\t\t\t\t\t}\n\t\t\t\t\tdx5 = sx[5] - ( s4*sx[4] );\n\t\t\t\t\tox4 = ox5 + ( j4*sx[4] );\n\t\t\t\t\tfor ( j3 = sh[3]; j3 > 0; ) {\n\t\t\t\t\t\tif ( j3 < bsize ) {\n\t\t\t\t\t\t\ts3 = j3;\n\t\t\t\t\t\t\tj3 = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ts3 = bsize;\n\t\t\t\t\t\t\tj3 -= bsize;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdx4 = sx[4] - ( s3*sx[3] );\n\t\t\t\t\t\tox3 = ox4 + ( j3*sx[3] );\n\t\t\t\t\t\tfor ( j2 = sh[2]; j2 > 0; ) {\n\t\t\t\t\t\t\tif ( j2 < bsize ) {\n\t\t\t\t\t\t\t\ts2 = j2;\n\t\t\t\t\t\t\t\tj2 = 0;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ts2 = bsize;\n\t\t\t\t\t\t\t\tj2 -= bsize;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdx3 = sx[3] - ( s2*sx[2] );\n\t\t\t\t\t\t\tox2 = ox3 + ( j2*sx[2] );\n\t\t\t\t\t\t\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\t\t\t\t\t\t\tif ( j1 < bsize ) {\n\t\t\t\t\t\t\t\t\ts1 = j1;\n\t\t\t\t\t\t\t\t\tj1 = 0;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\ts1 = bsize;\n\t\t\t\t\t\t\t\t\tj1 -= bsize;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdx2 = sx[2] - ( s1*sx[1] );\n\t\t\t\t\t\t\t\tox1 = ox2 + ( j1*sx[1] );\n\t\t\t\t\t\t\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\t\t\t\t\t\t\tif ( j0 < bsize ) {\n\t\t\t\t\t\t\t\t\t\ts0 = j0;\n\t\t\t\t\t\t\t\t\t\tj0 = 0;\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\ts0 = bsize;\n\t\t\t\t\t\t\t\t\t\tj0 -= bsize;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\t\t\t\t\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t\t\t\t\t\t\t// Compute the loop offset increment:\n\t\t\t\t\t\t\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t\t\t\t\t\t\t// Iterate over the ndarray dimensions...\n\t\t\t\t\t\t\t\t\tfor ( i7 = 0; i7 < s7; i7++ ) {\n\t\t\t\t\t\t\t\t\t\tfor ( i6 = 0; i6 < s6; i6++ ) {\n\t\t\t\t\t\t\t\t\t\t\tfor ( i5 = 0; i5 < s5; i5++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\tfor ( i4 = 0; i4 < s4; i4++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i3 = 0; i3 < s3; i3++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i2 = 0; i2 < s2; i2++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn true;\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\t\t\t\t\t\t\t\t\t\tix += dx0;\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\t\t\t\t\t\t\tix += dx1;\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\t\t\t\t\t\tix += dx2;\n\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\tix += dx3;\n\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\tix += dx4;\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\tix += dx5;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tix += dx6;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tix += dx7;\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}\n\t\t}\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = blockedincludes8d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MODULES //\n\nvar loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' );\nvar blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' );\n\n\n// MAIN //\n\n/**\n* Tests whether a reinterpreted complex number ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {ComplexLike} value - search element\n* @returns {boolean} result\n*\n* @example\n* var Float64Array = require( '@stdlib/array-float64' );\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 1, 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 8, 8, 8, 8, 8, 4, 2 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'complex128',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var v = {\n* 're': 3.0,\n* 'im': 4.0\n* };\n* var out = blockedincludes9d( x, v );\n* // returns true\n*\n* v = {\n* 're': -3.0,\n* 'im': -4.0\n* };\n* out = blockedincludes9d( x, v );\n* // returns false\n*/\nfunction blockedincludes9d( x, value ) { // eslint-disable-line max-statements\n\tvar bsize;\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar dx6;\n\tvar dx7;\n\tvar dx8;\n\tvar ox1;\n\tvar ox2;\n\tvar ox3;\n\tvar ox4;\n\tvar ox5;\n\tvar ox6;\n\tvar ox7;\n\tvar ox8;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar s2;\n\tvar s3;\n\tvar s4;\n\tvar s5;\n\tvar s6;\n\tvar s7;\n\tvar s8;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar i6;\n\tvar i7;\n\tvar i8;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar j3;\n\tvar j4;\n\tvar j5;\n\tvar j6;\n\tvar j7;\n\tvar j8;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Iterate over blocks...\n\tfor ( j8 = sh[8]; j8 > 0; ) {\n\t\tif ( j8 < bsize ) {\n\t\t\ts8 = j8;\n\t\t\tj8 = 0;\n\t\t} else {\n\t\t\ts8 = bsize;\n\t\t\tj8 -= bsize;\n\t\t}\n\t\tox8 = ox + ( j8*sx[8] );\n\t\tfor ( j7 = sh[7]; j7 > 0; ) {\n\t\t\tif ( j7 < bsize ) {\n\t\t\t\ts7 = j7;\n\t\t\t\tj7 = 0;\n\t\t\t} else {\n\t\t\t\ts7 = bsize;\n\t\t\t\tj7 -= bsize;\n\t\t\t}\n\t\t\tdx8 = sx[8] - ( s7*sx[7] );\n\t\t\tox7 = ox8 + ( j7*sx[7] );\n\t\t\tfor ( j6 = sh[6]; j6 > 0; ) {\n\t\t\t\tif ( j6 < bsize ) {\n\t\t\t\t\ts6 = j6;\n\t\t\t\t\tj6 = 0;\n\t\t\t\t} else {\n\t\t\t\t\ts6 = bsize;\n\t\t\t\t\tj6 -= bsize;\n\t\t\t\t}\n\t\t\t\tdx7 = sx[7] - ( s6*sx[6] );\n\t\t\t\tox6 = ox7 + ( j6*sx[6] );\n\t\t\t\tfor ( j5 = sh[5]; j5 > 0; ) {\n\t\t\t\t\tif ( j5 < bsize ) {\n\t\t\t\t\t\ts5 = j5;\n\t\t\t\t\t\tj5 = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts5 = bsize;\n\t\t\t\t\t\tj5 -= bsize;\n\t\t\t\t\t}\n\t\t\t\t\tdx6 = sx[6] - ( s5*sx[5] );\n\t\t\t\t\tox5 = ox6 + ( j5*sx[5] );\n\t\t\t\t\tfor ( j4 = sh[4]; j4 > 0; ) {\n\t\t\t\t\t\tif ( j4 < bsize ) {\n\t\t\t\t\t\t\ts4 = j4;\n\t\t\t\t\t\t\tj4 = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ts4 = bsize;\n\t\t\t\t\t\t\tj4 -= bsize;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdx5 = sx[5] - ( s4*sx[4] );\n\t\t\t\t\t\tox4 = ox5 + ( j4*sx[4] );\n\t\t\t\t\t\tfor ( j3 = sh[3]; j3 > 0; ) {\n\t\t\t\t\t\t\tif ( j3 < bsize ) {\n\t\t\t\t\t\t\t\ts3 = j3;\n\t\t\t\t\t\t\t\tj3 = 0;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ts3 = bsize;\n\t\t\t\t\t\t\t\tj3 -= bsize;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdx4 = sx[4] - ( s3*sx[3] );\n\t\t\t\t\t\t\tox3 = ox4 + ( j3*sx[3] );\n\t\t\t\t\t\t\tfor ( j2 = sh[2]; j2 > 0; ) {\n\t\t\t\t\t\t\t\tif ( j2 < bsize ) {\n\t\t\t\t\t\t\t\t\ts2 = j2;\n\t\t\t\t\t\t\t\t\tj2 = 0;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\ts2 = bsize;\n\t\t\t\t\t\t\t\t\tj2 -= bsize;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdx3 = sx[3] - ( s2*sx[2] );\n\t\t\t\t\t\t\t\tox2 = ox3 + ( j2*sx[2] );\n\t\t\t\t\t\t\t\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\t\t\t\t\t\t\t\tif ( j1 < bsize ) {\n\t\t\t\t\t\t\t\t\t\ts1 = j1;\n\t\t\t\t\t\t\t\t\t\tj1 = 0;\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\ts1 = bsize;\n\t\t\t\t\t\t\t\t\t\tj1 -= bsize;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tdx2 = sx[2] - ( s1*sx[1] );\n\t\t\t\t\t\t\t\t\tox1 = ox2 + ( j1*sx[1] );\n\t\t\t\t\t\t\t\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\t\t\t\t\t\t\t\tif ( j0 < bsize ) {\n\t\t\t\t\t\t\t\t\t\t\ts0 = j0;\n\t\t\t\t\t\t\t\t\t\t\tj0 = 0;\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\ts0 = bsize;\n\t\t\t\t\t\t\t\t\t\t\tj0 -= bsize;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\t\t\t\t\t\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t\t\t\t\t\t\t\t// Compute the loop offset increment:\n\t\t\t\t\t\t\t\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t\t\t\t\t\t\t\t// Iterate over the ndarray dimensions...\n\t\t\t\t\t\t\t\t\t\tfor ( i8 = 0; i8 < s8; i8++ ) {\n\t\t\t\t\t\t\t\t\t\t\tfor ( i7 = 0; i7 < s7; i7++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\tfor ( i6 = 0; i6 < s6; i6++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i5 = 0; i5 < s5; i5++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i4 = 0; i4 < s4; i4++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i3 = 0; i3 < s3; i3++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i2 = 0; i2 < s2; i2++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn true;\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\t\t\t\t\t\t\t\t\tix += dx0;\n\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\tix += dx1;\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\t\t\t\t\t\t\t\t\t\tix += dx2;\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\t\t\t\t\t\t\tix += dx3;\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\t\t\t\t\t\tix += dx4;\n\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\tix += dx5;\n\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\tix += dx6;\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\tix += dx7;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tix += dx8;\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}\n\t\t}\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = blockedincludes9d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MODULES //\n\nvar loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' );\nvar blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' );\n\n\n// MAIN //\n\n/**\n* Tests whether a reinterpreted complex number ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {ComplexLike} value - search element\n* @returns {boolean} result\n*\n* @example\n* var Float64Array = require( '@stdlib/array-float64' );\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 1, 1, 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 8, 8, 8, 8, 8, 8, 4, 2 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'complex128',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var v = {\n* 're': 3.0,\n* 'im': 4.0\n* };\n* var out = blockedincludes10d( x, v );\n* // returns true\n*\n* v = {\n* 're': -3.0,\n* 'im': -4.0\n* };\n* out = blockedincludes10d( x, v );\n* // returns false\n*/\nfunction blockedincludes10d( x, value ) { // eslint-disable-line max-statements, max-lines-per-function\n\tvar bsize;\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar dx6;\n\tvar dx7;\n\tvar dx8;\n\tvar dx9;\n\tvar ox1;\n\tvar ox2;\n\tvar ox3;\n\tvar ox4;\n\tvar ox5;\n\tvar ox6;\n\tvar ox7;\n\tvar ox8;\n\tvar ox9;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar s2;\n\tvar s3;\n\tvar s4;\n\tvar s5;\n\tvar s6;\n\tvar s7;\n\tvar s8;\n\tvar s9;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar i6;\n\tvar i7;\n\tvar i8;\n\tvar i9;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar j3;\n\tvar j4;\n\tvar j5;\n\tvar j6;\n\tvar j7;\n\tvar j8;\n\tvar j9;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Iterate over blocks...\n\tfor ( j9 = sh[9]; j9 > 0; ) {\n\t\tif ( j9 < bsize ) {\n\t\t\ts9 = j9;\n\t\t\tj9 = 0;\n\t\t} else {\n\t\t\ts9 = bsize;\n\t\t\tj9 -= bsize;\n\t\t}\n\t\tox9 = ox + ( j9*sx[9] );\n\t\tfor ( j8 = sh[8]; j8 > 0; ) {\n\t\t\tif ( j8 < bsize ) {\n\t\t\t\ts8 = j8;\n\t\t\t\tj8 = 0;\n\t\t\t} else {\n\t\t\t\ts8 = bsize;\n\t\t\t\tj8 -= bsize;\n\t\t\t}\n\t\t\tdx9 = sx[9] - ( s8*sx[8] );\n\t\t\tox8 = ox9 + ( j8*sx[8] );\n\t\t\tfor ( j7 = sh[7]; j7 > 0; ) {\n\t\t\t\tif ( j7 < bsize ) {\n\t\t\t\t\ts7 = j7;\n\t\t\t\t\tj7 = 0;\n\t\t\t\t} else {\n\t\t\t\t\ts7 = bsize;\n\t\t\t\t\tj7 -= bsize;\n\t\t\t\t}\n\t\t\t\tdx8 = sx[8] - ( s7*sx[7] );\n\t\t\t\tox7 = ox8 + ( j7*sx[7] );\n\t\t\t\tfor ( j6 = sh[6]; j6 > 0; ) {\n\t\t\t\t\tif ( j6 < bsize ) {\n\t\t\t\t\t\ts6 = j6;\n\t\t\t\t\t\tj6 = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts6 = bsize;\n\t\t\t\t\t\tj6 -= bsize;\n\t\t\t\t\t}\n\t\t\t\t\tdx7 = sx[7] - ( s6*sx[6] );\n\t\t\t\t\tox6 = ox7 + ( j6*sx[6] );\n\t\t\t\t\tfor ( j5 = sh[5]; j5 > 0; ) {\n\t\t\t\t\t\tif ( j5 < bsize ) {\n\t\t\t\t\t\t\ts5 = j5;\n\t\t\t\t\t\t\tj5 = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ts5 = bsize;\n\t\t\t\t\t\t\tj5 -= bsize;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdx6 = sx[6] - ( s5*sx[5] );\n\t\t\t\t\t\tox5 = ox6 + ( j5*sx[5] );\n\t\t\t\t\t\tfor ( j4 = sh[4]; j4 > 0; ) {\n\t\t\t\t\t\t\tif ( j4 < bsize ) {\n\t\t\t\t\t\t\t\ts4 = j4;\n\t\t\t\t\t\t\t\tj4 = 0;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ts4 = bsize;\n\t\t\t\t\t\t\t\tj4 -= bsize;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdx5 = sx[5] - ( s4*sx[4] );\n\t\t\t\t\t\t\tox4 = ox5 + ( j4*sx[4] );\n\t\t\t\t\t\t\tfor ( j3 = sh[3]; j3 > 0; ) {\n\t\t\t\t\t\t\t\tif ( j3 < bsize ) {\n\t\t\t\t\t\t\t\t\ts3 = j3;\n\t\t\t\t\t\t\t\t\tj3 = 0;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\ts3 = bsize;\n\t\t\t\t\t\t\t\t\tj3 -= bsize;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdx4 = sx[4] - ( s3*sx[3] );\n\t\t\t\t\t\t\t\tox3 = ox4 + ( j3*sx[3] );\n\t\t\t\t\t\t\t\tfor ( j2 = sh[2]; j2 > 0; ) {\n\t\t\t\t\t\t\t\t\tif ( j2 < bsize ) {\n\t\t\t\t\t\t\t\t\t\ts2 = j2;\n\t\t\t\t\t\t\t\t\t\tj2 = 0;\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\ts2 = bsize;\n\t\t\t\t\t\t\t\t\t\tj2 -= bsize;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tdx3 = sx[3] - ( s2*sx[2] );\n\t\t\t\t\t\t\t\t\tox2 = ox3 + ( j2*sx[2] );\n\t\t\t\t\t\t\t\t\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\t\t\t\t\t\t\t\t\tif ( j1 < bsize ) {\n\t\t\t\t\t\t\t\t\t\t\ts1 = j1;\n\t\t\t\t\t\t\t\t\t\t\tj1 = 0;\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\ts1 = bsize;\n\t\t\t\t\t\t\t\t\t\t\tj1 -= bsize;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tdx2 = sx[2] - ( s1*sx[1] );\n\t\t\t\t\t\t\t\t\t\tox1 = ox2 + ( j1*sx[1] );\n\t\t\t\t\t\t\t\t\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\t\t\t\t\t\t\t\t\tif ( j0 < bsize ) {\n\t\t\t\t\t\t\t\t\t\t\t\ts0 = j0;\n\t\t\t\t\t\t\t\t\t\t\t\tj0 = 0;\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\ts0 = bsize;\n\t\t\t\t\t\t\t\t\t\t\t\tj0 -= bsize;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\t\t\t\t\t\t\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t\t\t\t\t\t\t\t\t// Compute the loop offset increment:\n\t\t\t\t\t\t\t\t\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t\t\t\t\t\t\t\t\t// Iterate over the ndarray dimensions...\n\t\t\t\t\t\t\t\t\t\t\tfor ( i9 = 0; i9 < s9; i9++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\tfor ( i8 = 0; i8 < s8; i8++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i7 = 0; i7 < s7; i7++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i6 = 0; i6 < s6; i6++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i5 = 0; i5 < s5; i5++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i4 = 0; i4 < s4; i4++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i3 = 0; i3 < s3; i3++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i2 = 0; i2 < s2; i2++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn true;\n\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\tix += dx0;\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\t\t\t\t\t\t\t\t\t\t\t\t\t\tix += dx1;\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\t\t\t\t\t\t\t\t\tix += dx2;\n\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\tix += dx3;\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\t\t\t\t\t\t\t\t\t\tix += dx4;\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\t\t\t\t\t\t\tix += dx5;\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\t\t\t\t\t\tix += dx6;\n\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\tix += dx7;\n\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\tix += dx8;\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\tix += dx9;\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\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\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = blockedincludes10d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' );\nvar blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' );\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* var Float64Array = require( '@stdlib/array-float64' );\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'float64',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var out = blockedincludes2d( x, 6.0 );\n* // returns true\n*\n* out = blockedincludes2d( x, 100.0 );\n* // returns false\n*/\nfunction blockedincludes2d( x, value ) {\n\tvar bsize;\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar ox1;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar j0;\n\tvar j1;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Iterate over blocks...\n\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\tif ( j1 < bsize ) {\n\t\t\ts1 = j1;\n\t\t\tj1 = 0;\n\t\t} else {\n\t\t\ts1 = bsize;\n\t\t\tj1 -= bsize;\n\t\t}\n\t\tox1 = ox + ( j1*sx[1] );\n\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\tif ( j0 < bsize ) {\n\t\t\t\ts0 = j0;\n\t\t\t\tj0 = 0;\n\t\t\t} else {\n\t\t\t\ts0 = bsize;\n\t\t\t\tj0 -= bsize;\n\t\t\t}\n\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t// Compute the loop offset increment:\n\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t// Iterate over the ndarray dimensions...\n\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\tif ( xbuf[ ix ] === value ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx0;\n\t\t\t\t}\n\t\t\t\tix += dx1;\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = blockedincludes2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth */\n\n'use strict';\n\n// MODULES //\n\nvar loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' );\nvar blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' );\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* var Float64Array = require( '@stdlib/array-float64' );\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 3, 1, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 4, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'float64',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var out = blockedincludes3d( x, 6.0 );\n* // returns true\n*\n* out = blockedincludes3d( x, 100.0 );\n* // returns false\n*/\nfunction blockedincludes3d( x, value ) {\n\tvar bsize;\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar ox1;\n\tvar ox2;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar s2;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Iterate over blocks...\n\tfor ( j2 = sh[2]; j2 > 0; ) {\n\t\tif ( j2 < bsize ) {\n\t\t\ts2 = j2;\n\t\t\tj2 = 0;\n\t\t} else {\n\t\t\ts2 = bsize;\n\t\t\tj2 -= bsize;\n\t\t}\n\t\tox2 = ox + ( j2*sx[2] );\n\t\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\t\tif ( j1 < bsize ) {\n\t\t\t\ts1 = j1;\n\t\t\t\tj1 = 0;\n\t\t\t} else {\n\t\t\t\ts1 = bsize;\n\t\t\t\tj1 -= bsize;\n\t\t\t}\n\t\t\tdx2 = sx[2] - ( s1*sx[1] );\n\t\t\tox1 = ox2 + ( j1*sx[1] );\n\t\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\t\tif ( j0 < bsize ) {\n\t\t\t\t\ts0 = j0;\n\t\t\t\t\tj0 = 0;\n\t\t\t\t} else {\n\t\t\t\t\ts0 = bsize;\n\t\t\t\t\tj0 -= bsize;\n\t\t\t\t}\n\t\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t\t// Compute the loop offset increment:\n\t\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t\t// Iterate over the ndarray dimensions...\n\t\t\t\tfor ( i2 = 0; i2 < s2; i2++ ) {\n\t\t\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\t\t\tif ( xbuf[ ix ] === value ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tix += dx1;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx2;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = blockedincludes3d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth */\n\n'use strict';\n\n// MODULES //\n\nvar loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' );\nvar blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' );\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* var Float64Array = require( '@stdlib/array-float64' );\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 3, 1, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 12, 4, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'float64',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var out = blockedincludes4d( x, 6.0 );\n* // returns true\n*\n* out = blockedincludes4d( x, 100.0 );\n* // returns false\n*/\nfunction blockedincludes4d( x, value ) {\n\tvar bsize;\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar ox1;\n\tvar ox2;\n\tvar ox3;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar s2;\n\tvar s3;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar j3;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Iterate over blocks...\n\tfor ( j3 = sh[3]; j3 > 0; ) {\n\t\tif ( j3 < bsize ) {\n\t\t\ts3 = j3;\n\t\t\tj3 = 0;\n\t\t} else {\n\t\t\ts3 = bsize;\n\t\t\tj3 -= bsize;\n\t\t}\n\t\tox3 = ox + ( j3*sx[3] );\n\t\tfor ( j2 = sh[2]; j2 > 0; ) {\n\t\t\tif ( j2 < bsize ) {\n\t\t\t\ts2 = j2;\n\t\t\t\tj2 = 0;\n\t\t\t} else {\n\t\t\t\ts2 = bsize;\n\t\t\t\tj2 -= bsize;\n\t\t\t}\n\t\t\tdx3 = sx[3] - ( s2*sx[2] );\n\t\t\tox2 = ox3 + ( j2*sx[2] );\n\t\t\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\t\t\tif ( j1 < bsize ) {\n\t\t\t\t\ts1 = j1;\n\t\t\t\t\tj1 = 0;\n\t\t\t\t} else {\n\t\t\t\t\ts1 = bsize;\n\t\t\t\t\tj1 -= bsize;\n\t\t\t\t}\n\t\t\t\tdx2 = sx[2] - ( s1*sx[1] );\n\t\t\t\tox1 = ox2 + ( j1*sx[1] );\n\t\t\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\t\t\tif ( j0 < bsize ) {\n\t\t\t\t\t\ts0 = j0;\n\t\t\t\t\t\tj0 = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts0 = bsize;\n\t\t\t\t\t\tj0 -= bsize;\n\t\t\t\t\t}\n\t\t\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t\t\t// Compute the loop offset increment:\n\t\t\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t\t\t// Iterate over the ndarray dimensions...\n\t\t\t\t\tfor ( i3 = 0; i3 < s3; i3++ ) {\n\t\t\t\t\t\tfor ( i2 = 0; i2 < s2; i2++ ) {\n\t\t\t\t\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\t\t\t\t\tif ( xbuf[ ix ] === value ) {\n\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tix += dx1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tix += dx2;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tix += dx3;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = blockedincludes4d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth */\n\n'use strict';\n\n// MODULES //\n\nvar loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' );\nvar blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' );\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* var Float64Array = require( '@stdlib/array-float64' );\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 3, 1, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 12, 12, 4, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'float64',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var out = blockedincludes5d( x, 6.0 );\n* // returns true\n*\n* out = blockedincludes5d( x, 100.0 );\n* // returns false\n*/\nfunction blockedincludes5d( x, value ) {\n\tvar bsize;\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar ox1;\n\tvar ox2;\n\tvar ox3;\n\tvar ox4;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar s2;\n\tvar s3;\n\tvar s4;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar j3;\n\tvar j4;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Iterate over blocks...\n\tfor ( j4 = sh[4]; j4 > 0; ) {\n\t\tif ( j4 < bsize ) {\n\t\t\ts4 = j4;\n\t\t\tj4 = 0;\n\t\t} else {\n\t\t\ts4 = bsize;\n\t\t\tj4 -= bsize;\n\t\t}\n\t\tox4 = ox + ( j4*sx[4] );\n\t\tfor ( j3 = sh[3]; j3 > 0; ) {\n\t\t\tif ( j3 < bsize ) {\n\t\t\t\ts3 = j3;\n\t\t\t\tj3 = 0;\n\t\t\t} else {\n\t\t\t\ts3 = bsize;\n\t\t\t\tj3 -= bsize;\n\t\t\t}\n\t\t\tdx4 = sx[4] - ( s3*sx[3] );\n\t\t\tox3 = ox4 + ( j3*sx[3] );\n\t\t\tfor ( j2 = sh[2]; j2 > 0; ) {\n\t\t\t\tif ( j2 < bsize ) {\n\t\t\t\t\ts2 = j2;\n\t\t\t\t\tj2 = 0;\n\t\t\t\t} else {\n\t\t\t\t\ts2 = bsize;\n\t\t\t\t\tj2 -= bsize;\n\t\t\t\t}\n\t\t\t\tdx3 = sx[3] - ( s2*sx[2] );\n\t\t\t\tox2 = ox3 + ( j2*sx[2] );\n\t\t\t\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\t\t\t\tif ( j1 < bsize ) {\n\t\t\t\t\t\ts1 = j1;\n\t\t\t\t\t\tj1 = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts1 = bsize;\n\t\t\t\t\t\tj1 -= bsize;\n\t\t\t\t\t}\n\t\t\t\t\tdx2 = sx[2] - ( s1*sx[1] );\n\t\t\t\t\tox1 = ox2 + ( j1*sx[1] );\n\t\t\t\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\t\t\t\tif ( j0 < bsize ) {\n\t\t\t\t\t\t\ts0 = j0;\n\t\t\t\t\t\t\tj0 = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ts0 = bsize;\n\t\t\t\t\t\t\tj0 -= bsize;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\t\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t\t\t\t// Compute the loop offset increment:\n\t\t\t\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t\t\t\t// Iterate over the ndarray dimensions...\n\t\t\t\t\t\tfor ( i4 = 0; i4 < s4; i4++ ) {\n\t\t\t\t\t\t\tfor ( i3 = 0; i3 < s3; i3++ ) {\n\t\t\t\t\t\t\t\tfor ( i2 = 0; i2 < s2; i2++ ) {\n\t\t\t\t\t\t\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\t\t\t\t\t\t\tif ( xbuf[ ix ] === value ) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tix += dx1;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tix += dx2;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tix += dx3;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tix += dx4;\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\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = blockedincludes5d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MODULES //\n\nvar loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' );\nvar blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' );\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* var Float64Array = require( '@stdlib/array-float64' );\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 3, 1, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 12, 12, 12, 4, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'float64',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var out = blockedincludes6d( x, 6.0 );\n* // returns true\n*\n* out = blockedincludes6d( x, 100.0 );\n* // returns false\n*/\nfunction blockedincludes6d( x, value ) { // eslint-disable-line max-statements\n\tvar bsize;\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar ox1;\n\tvar ox2;\n\tvar ox3;\n\tvar ox4;\n\tvar ox5;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar s2;\n\tvar s3;\n\tvar s4;\n\tvar s5;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar j3;\n\tvar j4;\n\tvar j5;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Iterate over blocks...\n\tfor ( j5 = sh[5]; j5 > 0; ) {\n\t\tif ( j5 < bsize ) {\n\t\t\ts5 = j5;\n\t\t\tj5 = 0;\n\t\t} else {\n\t\t\ts5 = bsize;\n\t\t\tj5 -= bsize;\n\t\t}\n\t\tox5 = ox + ( j5*sx[5] );\n\t\tfor ( j4 = sh[4]; j4 > 0; ) {\n\t\t\tif ( j4 < bsize ) {\n\t\t\t\ts4 = j4;\n\t\t\t\tj4 = 0;\n\t\t\t} else {\n\t\t\t\ts4 = bsize;\n\t\t\t\tj4 -= bsize;\n\t\t\t}\n\t\t\tdx5 = sx[5] - ( s4*sx[4] );\n\t\t\tox4 = ox5 + ( j4*sx[4] );\n\t\t\tfor ( j3 = sh[3]; j3 > 0; ) {\n\t\t\t\tif ( j3 < bsize ) {\n\t\t\t\t\ts3 = j3;\n\t\t\t\t\tj3 = 0;\n\t\t\t\t} else {\n\t\t\t\t\ts3 = bsize;\n\t\t\t\t\tj3 -= bsize;\n\t\t\t\t}\n\t\t\t\tdx4 = sx[4] - ( s3*sx[3] );\n\t\t\t\tox3 = ox4 + ( j3*sx[3] );\n\t\t\t\tfor ( j2 = sh[2]; j2 > 0; ) {\n\t\t\t\t\tif ( j2 < bsize ) {\n\t\t\t\t\t\ts2 = j2;\n\t\t\t\t\t\tj2 = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts2 = bsize;\n\t\t\t\t\t\tj2 -= bsize;\n\t\t\t\t\t}\n\t\t\t\t\tdx3 = sx[3] - ( s2*sx[2] );\n\t\t\t\t\tox2 = ox3 + ( j2*sx[2] );\n\t\t\t\t\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\t\t\t\t\tif ( j1 < bsize ) {\n\t\t\t\t\t\t\ts1 = j1;\n\t\t\t\t\t\t\tj1 = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ts1 = bsize;\n\t\t\t\t\t\t\tj1 -= bsize;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdx2 = sx[2] - ( s1*sx[1] );\n\t\t\t\t\t\tox1 = ox2 + ( j1*sx[1] );\n\t\t\t\t\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\t\t\t\t\tif ( j0 < bsize ) {\n\t\t\t\t\t\t\t\ts0 = j0;\n\t\t\t\t\t\t\t\tj0 = 0;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ts0 = bsize;\n\t\t\t\t\t\t\t\tj0 -= bsize;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\t\t\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t\t\t\t\t// Compute the loop offset increment:\n\t\t\t\t\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t\t\t\t\t// Iterate over the ndarray dimensions...\n\t\t\t\t\t\t\tfor ( i5 = 0; i5 < s5; i5++ ) {\n\t\t\t\t\t\t\t\tfor ( i4 = 0; i4 < s4; i4++ ) {\n\t\t\t\t\t\t\t\t\tfor ( i3 = 0; i3 < s3; i3++ ) {\n\t\t\t\t\t\t\t\t\t\tfor ( i2 = 0; i2 < s2; i2++ ) {\n\t\t\t\t\t\t\t\t\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tif ( xbuf[ ix ] === value ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn true;\n\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\tix += dx0;\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\tix += dx1;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tix += dx2;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tix += dx3;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tix += dx4;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tix += dx5;\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}\n\t\t}\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = blockedincludes6d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MODULES //\n\nvar loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' );\nvar blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' );\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* var Float64Array = require( '@stdlib/array-float64' );\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 3, 1, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 12, 12, 12, 12, 4, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'float64',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var out = blockedincludes7d( x, 6.0 );\n* // returns true\n*\n* out = blockedincludes7d( x, 100.0 );\n* // returns false\n*/\nfunction blockedincludes7d( x, value ) { // eslint-disable-line max-statements\n\tvar bsize;\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar dx6;\n\tvar ox1;\n\tvar ox2;\n\tvar ox3;\n\tvar ox4;\n\tvar ox5;\n\tvar ox6;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar s2;\n\tvar s3;\n\tvar s4;\n\tvar s5;\n\tvar s6;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar i6;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar j3;\n\tvar j4;\n\tvar j5;\n\tvar j6;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Iterate over blocks...\n\tfor ( j6 = sh[6]; j6 > 0; ) {\n\t\tif ( j6 < bsize ) {\n\t\t\ts6 = j6;\n\t\t\tj6 = 0;\n\t\t} else {\n\t\t\ts6 = bsize;\n\t\t\tj6 -= bsize;\n\t\t}\n\t\tox6 = ox + ( j6*sx[6] );\n\t\tfor ( j5 = sh[5]; j5 > 0; ) {\n\t\t\tif ( j5 < bsize ) {\n\t\t\t\ts5 = j5;\n\t\t\t\tj5 = 0;\n\t\t\t} else {\n\t\t\t\ts5 = bsize;\n\t\t\t\tj5 -= bsize;\n\t\t\t}\n\t\t\tdx6 = sx[6] - ( s5*sx[5] );\n\t\t\tox5 = ox6 + ( j5*sx[5] );\n\t\t\tfor ( j4 = sh[4]; j4 > 0; ) {\n\t\t\t\tif ( j4 < bsize ) {\n\t\t\t\t\ts4 = j4;\n\t\t\t\t\tj4 = 0;\n\t\t\t\t} else {\n\t\t\t\t\ts4 = bsize;\n\t\t\t\t\tj4 -= bsize;\n\t\t\t\t}\n\t\t\t\tdx5 = sx[5] - ( s4*sx[4] );\n\t\t\t\tox4 = ox5 + ( j4*sx[4] );\n\t\t\t\tfor ( j3 = sh[3]; j3 > 0; ) {\n\t\t\t\t\tif ( j3 < bsize ) {\n\t\t\t\t\t\ts3 = j3;\n\t\t\t\t\t\tj3 = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts3 = bsize;\n\t\t\t\t\t\tj3 -= bsize;\n\t\t\t\t\t}\n\t\t\t\t\tdx4 = sx[4] - ( s3*sx[3] );\n\t\t\t\t\tox3 = ox4 + ( j3*sx[3] );\n\t\t\t\t\tfor ( j2 = sh[2]; j2 > 0; ) {\n\t\t\t\t\t\tif ( j2 < bsize ) {\n\t\t\t\t\t\t\ts2 = j2;\n\t\t\t\t\t\t\tj2 = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ts2 = bsize;\n\t\t\t\t\t\t\tj2 -= bsize;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdx3 = sx[3] - ( s2*sx[2] );\n\t\t\t\t\t\tox2 = ox3 + ( j2*sx[2] );\n\t\t\t\t\t\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\t\t\t\t\t\tif ( j1 < bsize ) {\n\t\t\t\t\t\t\t\ts1 = j1;\n\t\t\t\t\t\t\t\tj1 = 0;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ts1 = bsize;\n\t\t\t\t\t\t\t\tj1 -= bsize;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdx2 = sx[2] - ( s1*sx[1] );\n\t\t\t\t\t\t\tox1 = ox2 + ( j1*sx[1] );\n\t\t\t\t\t\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\t\t\t\t\t\tif ( j0 < bsize ) {\n\t\t\t\t\t\t\t\t\ts0 = j0;\n\t\t\t\t\t\t\t\t\tj0 = 0;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\ts0 = bsize;\n\t\t\t\t\t\t\t\t\tj0 -= bsize;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\t\t\t\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t\t\t\t\t\t// Compute the loop offset increment:\n\t\t\t\t\t\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t\t\t\t\t\t// Iterate over the ndarray dimensions...\n\t\t\t\t\t\t\t\tfor ( i6 = 0; i6 < s6; i6++ ) {\n\t\t\t\t\t\t\t\t\tfor ( i5 = 0; i5 < s5; i5++ ) {\n\t\t\t\t\t\t\t\t\t\tfor ( i4 = 0; i4 < s4; i4++ ) {\n\t\t\t\t\t\t\t\t\t\t\tfor ( i3 = 0; i3 < s3; i3++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\tfor ( i2 = 0; i2 < s2; i2++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif ( xbuf[ ix ] === value ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn true;\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\t\t\t\t\t\tix += dx0;\n\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\tix += dx1;\n\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\tix += dx2;\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\tix += dx3;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tix += dx4;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tix += dx5;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tix += dx6;\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}\n\t\t}\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = blockedincludes7d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MODULES //\n\nvar loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' );\nvar blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' );\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* var Float64Array = require( '@stdlib/array-float64' );\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 1, 3, 1, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 12, 12, 12, 12, 12, 4, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'float64',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var out = blockedincludes8d( x, 6.0 );\n* // returns true\n*\n* out = blockedincludes8d( x, 100.0 );\n* // returns false\n*/\nfunction blockedincludes8d( x, value ) { // eslint-disable-line max-statements\n\tvar bsize;\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar dx6;\n\tvar dx7;\n\tvar ox1;\n\tvar ox2;\n\tvar ox3;\n\tvar ox4;\n\tvar ox5;\n\tvar ox6;\n\tvar ox7;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar s2;\n\tvar s3;\n\tvar s4;\n\tvar s5;\n\tvar s6;\n\tvar s7;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar i6;\n\tvar i7;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar j3;\n\tvar j4;\n\tvar j5;\n\tvar j6;\n\tvar j7;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Iterate over blocks...\n\tfor ( j7 = sh[7]; j7 > 0; ) {\n\t\tif ( j7 < bsize ) {\n\t\t\ts7 = j7;\n\t\t\tj7 = 0;\n\t\t} else {\n\t\t\ts7 = bsize;\n\t\t\tj7 -= bsize;\n\t\t}\n\t\tox7 = ox + ( j7*sx[7] );\n\t\tfor ( j6 = sh[6]; j6 > 0; ) {\n\t\t\tif ( j6 < bsize ) {\n\t\t\t\ts6 = j6;\n\t\t\t\tj6 = 0;\n\t\t\t} else {\n\t\t\t\ts6 = bsize;\n\t\t\t\tj6 -= bsize;\n\t\t\t}\n\t\t\tdx7 = sx[7] - ( s6*sx[6] );\n\t\t\tox6 = ox7 + ( j6*sx[6] );\n\t\t\tfor ( j5 = sh[5]; j5 > 0; ) {\n\t\t\t\tif ( j5 < bsize ) {\n\t\t\t\t\ts5 = j5;\n\t\t\t\t\tj5 = 0;\n\t\t\t\t} else {\n\t\t\t\t\ts5 = bsize;\n\t\t\t\t\tj5 -= bsize;\n\t\t\t\t}\n\t\t\t\tdx6 = sx[6] - ( s5*sx[5] );\n\t\t\t\tox5 = ox6 + ( j5*sx[5] );\n\t\t\t\tfor ( j4 = sh[4]; j4 > 0; ) {\n\t\t\t\t\tif ( j4 < bsize ) {\n\t\t\t\t\t\ts4 = j4;\n\t\t\t\t\t\tj4 = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts4 = bsize;\n\t\t\t\t\t\tj4 -= bsize;\n\t\t\t\t\t}\n\t\t\t\t\tdx5 = sx[5] - ( s4*sx[4] );\n\t\t\t\t\tox4 = ox5 + ( j4*sx[4] );\n\t\t\t\t\tfor ( j3 = sh[3]; j3 > 0; ) {\n\t\t\t\t\t\tif ( j3 < bsize ) {\n\t\t\t\t\t\t\ts3 = j3;\n\t\t\t\t\t\t\tj3 = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ts3 = bsize;\n\t\t\t\t\t\t\tj3 -= bsize;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdx4 = sx[4] - ( s3*sx[3] );\n\t\t\t\t\t\tox3 = ox4 + ( j3*sx[3] );\n\t\t\t\t\t\tfor ( j2 = sh[2]; j2 > 0; ) {\n\t\t\t\t\t\t\tif ( j2 < bsize ) {\n\t\t\t\t\t\t\t\ts2 = j2;\n\t\t\t\t\t\t\t\tj2 = 0;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ts2 = bsize;\n\t\t\t\t\t\t\t\tj2 -= bsize;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdx3 = sx[3] - ( s2*sx[2] );\n\t\t\t\t\t\t\tox2 = ox3 + ( j2*sx[2] );\n\t\t\t\t\t\t\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\t\t\t\t\t\t\tif ( j1 < bsize ) {\n\t\t\t\t\t\t\t\t\ts1 = j1;\n\t\t\t\t\t\t\t\t\tj1 = 0;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\ts1 = bsize;\n\t\t\t\t\t\t\t\t\tj1 -= bsize;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdx2 = sx[2] - ( s1*sx[1] );\n\t\t\t\t\t\t\t\tox1 = ox2 + ( j1*sx[1] );\n\t\t\t\t\t\t\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\t\t\t\t\t\t\tif ( j0 < bsize ) {\n\t\t\t\t\t\t\t\t\t\ts0 = j0;\n\t\t\t\t\t\t\t\t\t\tj0 = 0;\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\ts0 = bsize;\n\t\t\t\t\t\t\t\t\t\tj0 -= bsize;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\t\t\t\t\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t\t\t\t\t\t\t// Compute the loop offset increment:\n\t\t\t\t\t\t\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t\t\t\t\t\t\t// Iterate over the ndarray dimensions...\n\t\t\t\t\t\t\t\t\tfor ( i7 = 0; i7 < s7; i7++ ) {\n\t\t\t\t\t\t\t\t\t\tfor ( i6 = 0; i6 < s6; i6++ ) {\n\t\t\t\t\t\t\t\t\t\t\tfor ( i5 = 0; i5 < s5; i5++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\tfor ( i4 = 0; i4 < s4; i4++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i3 = 0; i3 < s3; i3++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i2 = 0; i2 < s2; i2++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif ( xbuf[ ix ] === value ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn true;\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\t\t\t\t\t\t\t\t\t\tix += dx0;\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\t\t\t\t\t\t\tix += dx1;\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\t\t\t\t\t\tix += dx2;\n\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\tix += dx3;\n\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\tix += dx4;\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\tix += dx5;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tix += dx6;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tix += dx7;\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}\n\t\t}\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = blockedincludes8d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MODULES //\n\nvar loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' );\nvar blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' );\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* var Float64Array = require( '@stdlib/array-float64' );\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 1, 1, 3, 1, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 12, 12, 12, 12, 12, 12, 4, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'float64',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var out = blockedincludes9d( x, 6.0 );\n* // returns true\n*\n* out = blockedincludes9d( x, 100.0 );\n* // returns false\n*/\nfunction blockedincludes9d( x, value ) { // eslint-disable-line max-statements\n\tvar bsize;\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar dx6;\n\tvar dx7;\n\tvar dx8;\n\tvar ox1;\n\tvar ox2;\n\tvar ox3;\n\tvar ox4;\n\tvar ox5;\n\tvar ox6;\n\tvar ox7;\n\tvar ox8;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar s2;\n\tvar s3;\n\tvar s4;\n\tvar s5;\n\tvar s6;\n\tvar s7;\n\tvar s8;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar i6;\n\tvar i7;\n\tvar i8;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar j3;\n\tvar j4;\n\tvar j5;\n\tvar j6;\n\tvar j7;\n\tvar j8;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Iterate over blocks...\n\tfor ( j8 = sh[8]; j8 > 0; ) {\n\t\tif ( j8 < bsize ) {\n\t\t\ts8 = j8;\n\t\t\tj8 = 0;\n\t\t} else {\n\t\t\ts8 = bsize;\n\t\t\tj8 -= bsize;\n\t\t}\n\t\tox8 = ox + ( j8*sx[8] );\n\t\tfor ( j7 = sh[7]; j7 > 0; ) {\n\t\t\tif ( j7 < bsize ) {\n\t\t\t\ts7 = j7;\n\t\t\t\tj7 = 0;\n\t\t\t} else {\n\t\t\t\ts7 = bsize;\n\t\t\t\tj7 -= bsize;\n\t\t\t}\n\t\t\tdx8 = sx[8] - ( s7*sx[7] );\n\t\t\tox7 = ox8 + ( j7*sx[7] );\n\t\t\tfor ( j6 = sh[6]; j6 > 0; ) {\n\t\t\t\tif ( j6 < bsize ) {\n\t\t\t\t\ts6 = j6;\n\t\t\t\t\tj6 = 0;\n\t\t\t\t} else {\n\t\t\t\t\ts6 = bsize;\n\t\t\t\t\tj6 -= bsize;\n\t\t\t\t}\n\t\t\t\tdx7 = sx[7] - ( s6*sx[6] );\n\t\t\t\tox6 = ox7 + ( j6*sx[6] );\n\t\t\t\tfor ( j5 = sh[5]; j5 > 0; ) {\n\t\t\t\t\tif ( j5 < bsize ) {\n\t\t\t\t\t\ts5 = j5;\n\t\t\t\t\t\tj5 = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts5 = bsize;\n\t\t\t\t\t\tj5 -= bsize;\n\t\t\t\t\t}\n\t\t\t\t\tdx6 = sx[6] - ( s5*sx[5] );\n\t\t\t\t\tox5 = ox6 + ( j5*sx[5] );\n\t\t\t\t\tfor ( j4 = sh[4]; j4 > 0; ) {\n\t\t\t\t\t\tif ( j4 < bsize ) {\n\t\t\t\t\t\t\ts4 = j4;\n\t\t\t\t\t\t\tj4 = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ts4 = bsize;\n\t\t\t\t\t\t\tj4 -= bsize;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdx5 = sx[5] - ( s4*sx[4] );\n\t\t\t\t\t\tox4 = ox5 + ( j4*sx[4] );\n\t\t\t\t\t\tfor ( j3 = sh[3]; j3 > 0; ) {\n\t\t\t\t\t\t\tif ( j3 < bsize ) {\n\t\t\t\t\t\t\t\ts3 = j3;\n\t\t\t\t\t\t\t\tj3 = 0;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ts3 = bsize;\n\t\t\t\t\t\t\t\tj3 -= bsize;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdx4 = sx[4] - ( s3*sx[3] );\n\t\t\t\t\t\t\tox3 = ox4 + ( j3*sx[3] );\n\t\t\t\t\t\t\tfor ( j2 = sh[2]; j2 > 0; ) {\n\t\t\t\t\t\t\t\tif ( j2 < bsize ) {\n\t\t\t\t\t\t\t\t\ts2 = j2;\n\t\t\t\t\t\t\t\t\tj2 = 0;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\ts2 = bsize;\n\t\t\t\t\t\t\t\t\tj2 -= bsize;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdx3 = sx[3] - ( s2*sx[2] );\n\t\t\t\t\t\t\t\tox2 = ox3 + ( j2*sx[2] );\n\t\t\t\t\t\t\t\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\t\t\t\t\t\t\t\tif ( j1 < bsize ) {\n\t\t\t\t\t\t\t\t\t\ts1 = j1;\n\t\t\t\t\t\t\t\t\t\tj1 = 0;\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\ts1 = bsize;\n\t\t\t\t\t\t\t\t\t\tj1 -= bsize;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tdx2 = sx[2] - ( s1*sx[1] );\n\t\t\t\t\t\t\t\t\tox1 = ox2 + ( j1*sx[1] );\n\t\t\t\t\t\t\t\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\t\t\t\t\t\t\t\tif ( j0 < bsize ) {\n\t\t\t\t\t\t\t\t\t\t\ts0 = j0;\n\t\t\t\t\t\t\t\t\t\t\tj0 = 0;\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\ts0 = bsize;\n\t\t\t\t\t\t\t\t\t\t\tj0 -= bsize;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\t\t\t\t\t\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t\t\t\t\t\t\t\t// Compute the loop offset increment:\n\t\t\t\t\t\t\t\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t\t\t\t\t\t\t\t// Iterate over the ndarray dimensions...\n\t\t\t\t\t\t\t\t\t\tfor ( i8 = 0; i8 < s8; i8++ ) {\n\t\t\t\t\t\t\t\t\t\t\tfor ( i7 = 0; i7 < s7; i7++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\tfor ( i6 = 0; i6 < s6; i6++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i5 = 0; i5 < s5; i5++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i4 = 0; i4 < s4; i4++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i3 = 0; i3 < s3; i3++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i2 = 0; i2 < s2; i2++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif ( xbuf[ ix ] === value ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn true;\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\t\t\t\t\t\t\t\t\tix += dx0;\n\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\tix += dx1;\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\t\t\t\t\t\t\t\t\t\tix += dx2;\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\t\t\t\t\t\t\tix += dx3;\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\t\t\t\t\t\tix += dx4;\n\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\tix += dx5;\n\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\tix += dx6;\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\tix += dx7;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tix += dx8;\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}\n\t\t}\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = blockedincludes9d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MODULES //\n\nvar loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' );\nvar blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' );\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* var Float64Array = require( '@stdlib/array-float64' );\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 1, 1, 1, 3, 1, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 12, 12, 12, 12, 12, 12, 12, 4, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'float64',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var out = blockedincludes10d( x, 6.0 );\n* // returns true\n*\n* out = blockedincludes10d( x, 100.0 );\n* // returns false\n*/\nfunction blockedincludes10d( x, value ) { // eslint-disable-line max-statements, max-lines-per-function\n\tvar bsize;\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar dx6;\n\tvar dx7;\n\tvar dx8;\n\tvar dx9;\n\tvar ox1;\n\tvar ox2;\n\tvar ox3;\n\tvar ox4;\n\tvar ox5;\n\tvar ox6;\n\tvar ox7;\n\tvar ox8;\n\tvar ox9;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar s2;\n\tvar s3;\n\tvar s4;\n\tvar s5;\n\tvar s6;\n\tvar s7;\n\tvar s8;\n\tvar s9;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar i6;\n\tvar i7;\n\tvar i8;\n\tvar i9;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar j3;\n\tvar j4;\n\tvar j5;\n\tvar j6;\n\tvar j7;\n\tvar j8;\n\tvar j9;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Iterate over blocks...\n\tfor ( j9 = sh[9]; j9 > 0; ) {\n\t\tif ( j9 < bsize ) {\n\t\t\ts9 = j9;\n\t\t\tj9 = 0;\n\t\t} else {\n\t\t\ts9 = bsize;\n\t\t\tj9 -= bsize;\n\t\t}\n\t\tox9 = ox + ( j9*sx[9] );\n\t\tfor ( j8 = sh[8]; j8 > 0; ) {\n\t\t\tif ( j8 < bsize ) {\n\t\t\t\ts8 = j8;\n\t\t\t\tj8 = 0;\n\t\t\t} else {\n\t\t\t\ts8 = bsize;\n\t\t\t\tj8 -= bsize;\n\t\t\t}\n\t\t\tdx9 = sx[9] - ( s8*sx[8] );\n\t\t\tox8 = ox9 + ( j8*sx[8] );\n\t\t\tfor ( j7 = sh[7]; j7 > 0; ) {\n\t\t\t\tif ( j7 < bsize ) {\n\t\t\t\t\ts7 = j7;\n\t\t\t\t\tj7 = 0;\n\t\t\t\t} else {\n\t\t\t\t\ts7 = bsize;\n\t\t\t\t\tj7 -= bsize;\n\t\t\t\t}\n\t\t\t\tdx8 = sx[8] - ( s7*sx[7] );\n\t\t\t\tox7 = ox8 + ( j7*sx[7] );\n\t\t\t\tfor ( j6 = sh[6]; j6 > 0; ) {\n\t\t\t\t\tif ( j6 < bsize ) {\n\t\t\t\t\t\ts6 = j6;\n\t\t\t\t\t\tj6 = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts6 = bsize;\n\t\t\t\t\t\tj6 -= bsize;\n\t\t\t\t\t}\n\t\t\t\t\tdx7 = sx[7] - ( s6*sx[6] );\n\t\t\t\t\tox6 = ox7 + ( j6*sx[6] );\n\t\t\t\t\tfor ( j5 = sh[5]; j5 > 0; ) {\n\t\t\t\t\t\tif ( j5 < bsize ) {\n\t\t\t\t\t\t\ts5 = j5;\n\t\t\t\t\t\t\tj5 = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ts5 = bsize;\n\t\t\t\t\t\t\tj5 -= bsize;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdx6 = sx[6] - ( s5*sx[5] );\n\t\t\t\t\t\tox5 = ox6 + ( j5*sx[5] );\n\t\t\t\t\t\tfor ( j4 = sh[4]; j4 > 0; ) {\n\t\t\t\t\t\t\tif ( j4 < bsize ) {\n\t\t\t\t\t\t\t\ts4 = j4;\n\t\t\t\t\t\t\t\tj4 = 0;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ts4 = bsize;\n\t\t\t\t\t\t\t\tj4 -= bsize;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdx5 = sx[5] - ( s4*sx[4] );\n\t\t\t\t\t\t\tox4 = ox5 + ( j4*sx[4] );\n\t\t\t\t\t\t\tfor ( j3 = sh[3]; j3 > 0; ) {\n\t\t\t\t\t\t\t\tif ( j3 < bsize ) {\n\t\t\t\t\t\t\t\t\ts3 = j3;\n\t\t\t\t\t\t\t\t\tj3 = 0;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\ts3 = bsize;\n\t\t\t\t\t\t\t\t\tj3 -= bsize;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdx4 = sx[4] - ( s3*sx[3] );\n\t\t\t\t\t\t\t\tox3 = ox4 + ( j3*sx[3] );\n\t\t\t\t\t\t\t\tfor ( j2 = sh[2]; j2 > 0; ) {\n\t\t\t\t\t\t\t\t\tif ( j2 < bsize ) {\n\t\t\t\t\t\t\t\t\t\ts2 = j2;\n\t\t\t\t\t\t\t\t\t\tj2 = 0;\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\ts2 = bsize;\n\t\t\t\t\t\t\t\t\t\tj2 -= bsize;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tdx3 = sx[3] - ( s2*sx[2] );\n\t\t\t\t\t\t\t\t\tox2 = ox3 + ( j2*sx[2] );\n\t\t\t\t\t\t\t\t\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\t\t\t\t\t\t\t\t\tif ( j1 < bsize ) {\n\t\t\t\t\t\t\t\t\t\t\ts1 = j1;\n\t\t\t\t\t\t\t\t\t\t\tj1 = 0;\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\ts1 = bsize;\n\t\t\t\t\t\t\t\t\t\t\tj1 -= bsize;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tdx2 = sx[2] - ( s1*sx[1] );\n\t\t\t\t\t\t\t\t\t\tox1 = ox2 + ( j1*sx[1] );\n\t\t\t\t\t\t\t\t\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\t\t\t\t\t\t\t\t\tif ( j0 < bsize ) {\n\t\t\t\t\t\t\t\t\t\t\t\ts0 = j0;\n\t\t\t\t\t\t\t\t\t\t\t\tj0 = 0;\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\ts0 = bsize;\n\t\t\t\t\t\t\t\t\t\t\t\tj0 -= bsize;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\t\t\t\t\t\t\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t\t\t\t\t\t\t\t\t// Compute the loop offset increment:\n\t\t\t\t\t\t\t\t\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t\t\t\t\t\t\t\t\t// Iterate over the ndarray dimensions...\n\t\t\t\t\t\t\t\t\t\t\tfor ( i9 = 0; i9 < s9; i9++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\tfor ( i8 = 0; i8 < s8; i8++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i7 = 0; i7 < s7; i7++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i6 = 0; i6 < s6; i6++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i5 = 0; i5 < s5; i5++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i4 = 0; i4 < s4; i4++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i3 = 0; i3 < s3; i3++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i2 = 0; i2 < s2; i2++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif ( xbuf[ ix ] === value ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn true;\n\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\tix += dx0;\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\t\t\t\t\t\t\t\t\t\t\t\t\t\tix += dx1;\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\t\t\t\t\t\t\t\t\tix += dx2;\n\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\tix += dx3;\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\t\t\t\t\t\t\t\t\t\tix += dx4;\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\t\t\t\t\t\t\tix += dx5;\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\t\t\t\t\t\tix += dx6;\n\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\tix += dx7;\n\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\tix += dx8;\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\tix += dx9;\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\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\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = blockedincludes10d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {Array} x.accessors - data buffer accessors\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' );\n* var accessors = require( '@stdlib/array-base-accessors' );\n*\n* // Create a data buffer:\n* var xbuf = toAccessorArray( [ 1.0, 2.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [];\n*\n* // Define the array strides:\n* var sx = [ 0 ];\n*\n* // Define the index offset:\n* var ox = 1;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'generic',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major',\n* 'accessors': accessors( xbuf ).accessors\n* };\n*\n* // Perform reduction:\n* var out = includes0d( x, 2.0 );\n* // returns true\n*\n* out = includes0d( x, 100.0 );\n* // returns false\n*/\nfunction includes0d( x, value ) {\n\treturn ( x.accessors[ 0 ]( x.data, x.offset ) === value );\n}\n\n\n// EXPORTS //\n\nmodule.exports = includes0d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {Array} x.accessors - data buffer accessors\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' );\n* var accessors = require( '@stdlib/array-base-accessors' );\n*\n* // Create a data buffer:\n* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 4 ];\n*\n* // Define the array strides:\n* var sx = [ 2 ];\n*\n* // Define the index offset:\n* var ox = 1;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'generic',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major',\n* 'accessors': accessors( xbuf ).accessors\n* };\n*\n* // Perform reduction:\n* var out = includes1d( x, 6.0 );\n* // returns true\n*\n* out = includes1d( x, 100.0 );\n* // returns false\n*/\nfunction includes1d( x, value ) {\n\tvar xbuf;\n\tvar get;\n\tvar dx0;\n\tvar S0;\n\tvar ix;\n\tvar i0;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables: dimensions and loop offset (pointer) increments...\n\tS0 = x.shape[ 0 ];\n\tdx0 = x.strides[ 0 ];\n\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache accessor:\n\tget = x.accessors[ 0 ];\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\tif ( get( xbuf, ix ) === value ) {\n\t\t\treturn true;\n\t\t}\n\t\tix += dx0;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = includes1d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar strides2order = require( '@stdlib/ndarray-base-strides2order' );\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {Array} x.accessors - data buffer accessors\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' );\n* var accessors = require( '@stdlib/array-base-accessors' );\n*\n* // Create a data buffer:\n* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'generic',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major',\n* 'accessors': accessors( xbuf ).accessors\n* };\n*\n* // Perform reduction:\n* var out = includes2d( x, 6.0 );\n* // returns true\n*\n* out = includes2d( x, 100.0 );\n* // returns false\n*/\nfunction includes2d( x, value ) {\n\tvar xbuf;\n\tvar get;\n\tvar dx0;\n\tvar dx1;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 1 ];\n\t\tS1 = sh[ 0 ];\n\t\tdx0 = sx[ 1 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 0 ] - ( S0*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache accessor:\n\tget = x.accessors[ 0 ];\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tif ( get( xbuf, ix ) === value ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tix += dx0;\n\t\t}\n\t\tix += dx1;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = includes2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar strides2order = require( '@stdlib/ndarray-base-strides2order' );\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {Array} x.accessors - data buffer accessors\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' );\n* var accessors = require( '@stdlib/array-base-accessors' );\n*\n* // Create a data buffer:\n* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'generic',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major',\n* 'accessors': accessors( xbuf ).accessors\n* };\n*\n* // Perform reduction:\n* var out = includes3d( x, 6.0 );\n* // returns true\n*\n* out = includes3d( x, 100.0 );\n* // returns false\n*/\nfunction includes3d( x, value ) {\n\tvar xbuf;\n\tvar get;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 2 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 0 ];\n\t\tdx0 = sx[ 2 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[2] );\n\t\tdx2 = sx[ 0 ] - ( S1*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 2 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[1] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache accessor:\n\tget = x.accessors[ 0 ];\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\tif ( get( xbuf, ix ) === value ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tix += dx0;\n\t\t\t}\n\t\t\tix += dx1;\n\t\t}\n\t\tix += dx2;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = includes3d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar strides2order = require( '@stdlib/ndarray-base-strides2order' );\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {Array} x.accessors - data buffer accessors\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' );\n* var accessors = require( '@stdlib/array-base-accessors' );\n*\n* // Create a data buffer:\n* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'generic',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major',\n* 'accessors': accessors( xbuf ).accessors\n* };\n*\n* // Perform reduction:\n* var out = includes4d( x, 6.0 );\n* // returns true\n*\n* out = includes4d( x, 100.0 );\n* // returns false\n*/\nfunction includes4d( x, value ) {\n\tvar xbuf;\n\tvar get;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 3 ];\n\t\tS1 = sh[ 2 ];\n\t\tS2 = sh[ 1 ];\n\t\tS3 = sh[ 0 ];\n\t\tdx0 = sx[ 3 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 2 ] - ( S0*sx[3] );\n\t\tdx2 = sx[ 1 ] - ( S1*sx[2] );\n\t\tdx3 = sx[ 0 ] - ( S2*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 2 ];\n\t\tS3 = sh[ 3 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[1] );\n\t\tdx3 = sx[ 3 ] - ( S2*sx[2] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache accessor:\n\tget = x.accessors[ 0 ];\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\tif ( get( xbuf, ix ) === value ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx0;\n\t\t\t\t}\n\t\t\t\tix += dx1;\n\t\t\t}\n\t\t\tix += dx2;\n\t\t}\n\t\tix += dx3;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = includes4d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth */\n\n'use strict';\n\n// MODULES //\n\nvar strides2order = require( '@stdlib/ndarray-base-strides2order' );\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {Array} x.accessors - data buffer accessors\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' );\n* var accessors = require( '@stdlib/array-base-accessors' );\n*\n* // Create a data buffer:\n* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 8, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'generic',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major',\n* 'accessors': accessors( xbuf ).accessors\n* };\n*\n* // Perform reduction:\n* var out = includes5d( x, 6.0 );\n* // returns true\n*\n* out = includes5d( x, 100.0 );\n* // returns false\n*/\nfunction includes5d( x, value ) {\n\tvar xbuf;\n\tvar get;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 4 ];\n\t\tS1 = sh[ 3 ];\n\t\tS2 = sh[ 2 ];\n\t\tS3 = sh[ 1 ];\n\t\tS4 = sh[ 0 ];\n\t\tdx0 = sx[ 4 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 3 ] - ( S0*sx[4] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[3] );\n\t\tdx3 = sx[ 1 ] - ( S2*sx[2] );\n\t\tdx4 = sx[ 0 ] - ( S3*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 2 ];\n\t\tS3 = sh[ 3 ];\n\t\tS4 = sh[ 4 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[1] );\n\t\tdx3 = sx[ 3 ] - ( S2*sx[2] );\n\t\tdx4 = sx[ 4 ] - ( S3*sx[3] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache accessor:\n\tget = x.accessors[ 0 ];\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\tif ( get( xbuf, ix ) === value ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx1;\n\t\t\t\t}\n\t\t\t\tix += dx2;\n\t\t\t}\n\t\t\tix += dx3;\n\t\t}\n\t\tix += dx4;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = includes5d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth */\n\n'use strict';\n\n// MODULES //\n\nvar strides2order = require( '@stdlib/ndarray-base-strides2order' );\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {Array} x.accessors - data buffer accessors\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' );\n* var accessors = require( '@stdlib/array-base-accessors' );\n*\n* // Create a data buffer:\n* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 8, 8, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'generic',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major',\n* 'accessors': accessors( xbuf ).accessors\n* };\n*\n* // Perform reduction:\n* var out = includes6d( x, 6.0 );\n* // returns true\n*\n* out = includes6d( x, 100.0 );\n* // returns false\n*/\nfunction includes6d( x, value ) {\n\tvar xbuf;\n\tvar get;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar S5;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 5 ];\n\t\tS1 = sh[ 4 ];\n\t\tS2 = sh[ 3 ];\n\t\tS3 = sh[ 2 ];\n\t\tS4 = sh[ 1 ];\n\t\tS5 = sh[ 0 ];\n\t\tdx0 = sx[ 5 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 4 ] - ( S0*sx[5] );\n\t\tdx2 = sx[ 3 ] - ( S1*sx[4] );\n\t\tdx3 = sx[ 2 ] - ( S2*sx[3] );\n\t\tdx4 = sx[ 1 ] - ( S3*sx[2] );\n\t\tdx5 = sx[ 0 ] - ( S4*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 2 ];\n\t\tS3 = sh[ 3 ];\n\t\tS4 = sh[ 4 ];\n\t\tS5 = sh[ 5 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[1] );\n\t\tdx3 = sx[ 3 ] - ( S2*sx[2] );\n\t\tdx4 = sx[ 4 ] - ( S3*sx[3] );\n\t\tdx5 = sx[ 5 ] - ( S4*sx[4] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache accessor:\n\tget = x.accessors[ 0 ];\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i5 = 0; i5 < S5; i5++ ) {\n\t\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\t\tif ( get( xbuf, ix ) === value ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tix += dx1;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx2;\n\t\t\t\t}\n\t\t\t\tix += dx3;\n\t\t\t}\n\t\t\tix += dx4;\n\t\t}\n\t\tix += dx5;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = includes6d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth */\n\n'use strict';\n\n// MODULES //\n\nvar strides2order = require( '@stdlib/ndarray-base-strides2order' );\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {Array} x.accessors - data buffer accessors\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' );\n* var accessors = require( '@stdlib/array-base-accessors' );\n*\n* // Create a data buffer:\n* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 8, 8, 8, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'generic',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major',\n* 'accessors': accessors( xbuf ).accessors\n* };\n*\n* // Perform reduction:\n* var out = includes7d( x, 6.0 );\n* // returns true\n*\n* out = includes7d( x, 100.0 );\n* // returns false\n*/\nfunction includes7d( x, value ) {\n\tvar xbuf;\n\tvar get;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar dx6;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar S5;\n\tvar S6;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar i6;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 6 ];\n\t\tS1 = sh[ 5 ];\n\t\tS2 = sh[ 4 ];\n\t\tS3 = sh[ 3 ];\n\t\tS4 = sh[ 2 ];\n\t\tS5 = sh[ 1 ];\n\t\tS6 = sh[ 0 ];\n\t\tdx0 = sx[ 6 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 5 ] - ( S0*sx[6] );\n\t\tdx2 = sx[ 4 ] - ( S1*sx[5] );\n\t\tdx3 = sx[ 3 ] - ( S2*sx[4] );\n\t\tdx4 = sx[ 2 ] - ( S3*sx[3] );\n\t\tdx5 = sx[ 1 ] - ( S4*sx[2] );\n\t\tdx6 = sx[ 0 ] - ( S5*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 2 ];\n\t\tS3 = sh[ 3 ];\n\t\tS4 = sh[ 4 ];\n\t\tS5 = sh[ 5 ];\n\t\tS6 = sh[ 6 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[1] );\n\t\tdx3 = sx[ 3 ] - ( S2*sx[2] );\n\t\tdx4 = sx[ 4 ] - ( S3*sx[3] );\n\t\tdx5 = sx[ 5 ] - ( S4*sx[4] );\n\t\tdx6 = sx[ 6 ] - ( S5*sx[5] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache accessor:\n\tget = x.accessors[ 0 ];\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i6 = 0; i6 < S6; i6++ ) {\n\t\tfor ( i5 = 0; i5 < S5; i5++ ) {\n\t\t\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\t\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\t\t\tif ( get( xbuf, ix ) === value ) {\n\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tix += dx1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tix += dx2;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx3;\n\t\t\t\t}\n\t\t\t\tix += dx4;\n\t\t\t}\n\t\t\tix += dx5;\n\t\t}\n\t\tix += dx6;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = includes7d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth */\n\n'use strict';\n\n// MODULES //\n\nvar strides2order = require( '@stdlib/ndarray-base-strides2order' );\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {Array} x.accessors - data buffer accessors\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' );\n* var accessors = require( '@stdlib/array-base-accessors' );\n*\n* // Create a data buffer:\n* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 8, 8, 8, 8, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'generic',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major',\n* 'accessors': accessors( xbuf ).accessors\n* };\n*\n* // Perform reduction:\n* var out = includes8d( x, 6.0 );\n* // returns true\n*\n* out = includes8d( x, 100.0 );\n* // returns false\n*/\nfunction includes8d( x, value ) {\n\tvar xbuf;\n\tvar get;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar dx6;\n\tvar dx7;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar S5;\n\tvar S6;\n\tvar S7;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar i6;\n\tvar i7;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 7 ];\n\t\tS1 = sh[ 6 ];\n\t\tS2 = sh[ 5 ];\n\t\tS3 = sh[ 4 ];\n\t\tS4 = sh[ 3 ];\n\t\tS5 = sh[ 2 ];\n\t\tS6 = sh[ 1 ];\n\t\tS7 = sh[ 0 ];\n\t\tdx0 = sx[ 7 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 6 ] - ( S0*sx[7] );\n\t\tdx2 = sx[ 5 ] - ( S1*sx[6] );\n\t\tdx3 = sx[ 4 ] - ( S2*sx[5] );\n\t\tdx4 = sx[ 3 ] - ( S3*sx[4] );\n\t\tdx5 = sx[ 2 ] - ( S4*sx[3] );\n\t\tdx6 = sx[ 1 ] - ( S5*sx[2] );\n\t\tdx7 = sx[ 0 ] - ( S6*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 2 ];\n\t\tS3 = sh[ 3 ];\n\t\tS4 = sh[ 4 ];\n\t\tS5 = sh[ 5 ];\n\t\tS6 = sh[ 6 ];\n\t\tS7 = sh[ 7 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[1] );\n\t\tdx3 = sx[ 3 ] - ( S2*sx[2] );\n\t\tdx4 = sx[ 4 ] - ( S3*sx[3] );\n\t\tdx5 = sx[ 5 ] - ( S4*sx[4] );\n\t\tdx6 = sx[ 6 ] - ( S5*sx[5] );\n\t\tdx7 = sx[ 7 ] - ( S6*sx[6] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache accessor:\n\tget = x.accessors[ 0 ];\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i7 = 0; i7 < S7; i7++ ) {\n\t\tfor ( i6 = 0; i6 < S6; i6++ ) {\n\t\t\tfor ( i5 = 0; i5 < S5; i5++ ) {\n\t\t\t\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\t\t\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\t\t\t\tif ( get( xbuf, ix ) === value ) {\n\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tix += dx1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tix += dx2;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tix += dx3;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx4;\n\t\t\t\t}\n\t\t\t\tix += dx5;\n\t\t\t}\n\t\t\tix += dx6;\n\t\t}\n\t\tix += dx7;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = includes8d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth */\n\n'use strict';\n\n// MODULES //\n\nvar strides2order = require( '@stdlib/ndarray-base-strides2order' );\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {Array} x.accessors - data buffer accessors\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' );\n* var accessors = require( '@stdlib/array-base-accessors' );\n*\n* // Create a data buffer:\n* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 1, 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 8, 8, 8, 8, 8, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'generic',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major',\n* 'accessors': accessors( xbuf ).accessors\n* };\n*\n* // Perform reduction:\n* var out = includes9d( x, 6.0 );\n* // returns true\n*\n* out = includes9d( x, 100.0 );\n* // returns false\n*/\nfunction includes9d( x, value ) {\n\tvar xbuf;\n\tvar get;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar dx6;\n\tvar dx7;\n\tvar dx8;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar S5;\n\tvar S6;\n\tvar S7;\n\tvar S8;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar i6;\n\tvar i7;\n\tvar i8;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 8 ];\n\t\tS1 = sh[ 7 ];\n\t\tS2 = sh[ 6 ];\n\t\tS3 = sh[ 5 ];\n\t\tS4 = sh[ 4 ];\n\t\tS5 = sh[ 3 ];\n\t\tS6 = sh[ 2 ];\n\t\tS7 = sh[ 1 ];\n\t\tS8 = sh[ 0 ];\n\t\tdx0 = sx[ 8 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 7 ] - ( S0*sx[8] );\n\t\tdx2 = sx[ 6 ] - ( S1*sx[7] );\n\t\tdx3 = sx[ 5 ] - ( S2*sx[6] );\n\t\tdx4 = sx[ 4 ] - ( S3*sx[5] );\n\t\tdx5 = sx[ 3 ] - ( S4*sx[4] );\n\t\tdx6 = sx[ 2 ] - ( S5*sx[3] );\n\t\tdx7 = sx[ 1 ] - ( S6*sx[2] );\n\t\tdx8 = sx[ 0 ] - ( S7*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 2 ];\n\t\tS3 = sh[ 3 ];\n\t\tS4 = sh[ 4 ];\n\t\tS5 = sh[ 5 ];\n\t\tS6 = sh[ 6 ];\n\t\tS7 = sh[ 7 ];\n\t\tS8 = sh[ 8 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[1] );\n\t\tdx3 = sx[ 3 ] - ( S2*sx[2] );\n\t\tdx4 = sx[ 4 ] - ( S3*sx[3] );\n\t\tdx5 = sx[ 5 ] - ( S4*sx[4] );\n\t\tdx6 = sx[ 6 ] - ( S5*sx[5] );\n\t\tdx7 = sx[ 7 ] - ( S6*sx[6] );\n\t\tdx8 = sx[ 8 ] - ( S7*sx[7] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache accessor:\n\tget = x.accessors[ 0 ];\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i8 = 0; i8 < S8; i8++ ) {\n\t\tfor ( i7 = 0; i7 < S7; i7++ ) {\n\t\t\tfor ( i6 = 0; i6 < S6; i6++ ) {\n\t\t\t\tfor ( i5 = 0; i5 < S5; i5++ ) {\n\t\t\t\t\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\t\t\t\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\t\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\t\t\t\t\tif ( get( xbuf, ix ) === value ) {\n\t\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tix += dx1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tix += dx2;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tix += dx3;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tix += dx4;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx5;\n\t\t\t\t}\n\t\t\t\tix += dx6;\n\t\t\t}\n\t\t\tix += dx7;\n\t\t}\n\t\tix += dx8;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = includes9d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth */\n\n'use strict';\n\n// MODULES //\n\nvar strides2order = require( '@stdlib/ndarray-base-strides2order' );\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {Array} x.accessors - data buffer accessors\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' );\n* var accessors = require( '@stdlib/array-base-accessors' );\n*\n* // Create a data buffer:\n* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 1, 1, 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 8, 8, 8, 8, 8, 8, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'generic',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major',\n* 'accessors': accessors( xbuf ).accessors\n* };\n*\n* // Perform reduction:\n* var out = includes10d( x, 6.0 );\n* // returns true\n*\n* out = includes10d( x, 100.0 );\n* // returns false\n*/\nfunction includes10d( x, value ) { // eslint-disable-line max-statements\n\tvar xbuf;\n\tvar get;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar dx6;\n\tvar dx7;\n\tvar dx8;\n\tvar dx9;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar S5;\n\tvar S6;\n\tvar S7;\n\tvar S8;\n\tvar S9;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar i6;\n\tvar i7;\n\tvar i8;\n\tvar i9;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 9 ];\n\t\tS1 = sh[ 8 ];\n\t\tS2 = sh[ 7 ];\n\t\tS3 = sh[ 6 ];\n\t\tS4 = sh[ 5 ];\n\t\tS5 = sh[ 4 ];\n\t\tS6 = sh[ 3 ];\n\t\tS7 = sh[ 2 ];\n\t\tS8 = sh[ 1 ];\n\t\tS9 = sh[ 0 ];\n\t\tdx0 = sx[ 9 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 8 ] - ( S0*sx[9] );\n\t\tdx2 = sx[ 7 ] - ( S1*sx[8] );\n\t\tdx3 = sx[ 6 ] - ( S2*sx[7] );\n\t\tdx4 = sx[ 5 ] - ( S3*sx[6] );\n\t\tdx5 = sx[ 4 ] - ( S4*sx[5] );\n\t\tdx6 = sx[ 3 ] - ( S5*sx[4] );\n\t\tdx7 = sx[ 2 ] - ( S6*sx[3] );\n\t\tdx8 = sx[ 1 ] - ( S7*sx[2] );\n\t\tdx9 = sx[ 0 ] - ( S8*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 2 ];\n\t\tS3 = sh[ 3 ];\n\t\tS4 = sh[ 4 ];\n\t\tS5 = sh[ 5 ];\n\t\tS6 = sh[ 6 ];\n\t\tS7 = sh[ 7 ];\n\t\tS8 = sh[ 8 ];\n\t\tS9 = sh[ 9 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[1] );\n\t\tdx3 = sx[ 3 ] - ( S2*sx[2] );\n\t\tdx4 = sx[ 4 ] - ( S3*sx[3] );\n\t\tdx5 = sx[ 5 ] - ( S4*sx[4] );\n\t\tdx6 = sx[ 6 ] - ( S5*sx[5] );\n\t\tdx7 = sx[ 7 ] - ( S6*sx[6] );\n\t\tdx8 = sx[ 8 ] - ( S7*sx[7] );\n\t\tdx9 = sx[ 9 ] - ( S8*sx[8] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache accessor:\n\tget = x.accessors[ 0 ];\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i9 = 0; i9 < S9; i9++ ) {\n\t\tfor ( i8 = 0; i8 < S8; i8++ ) {\n\t\t\tfor ( i7 = 0; i7 < S7; i7++ ) {\n\t\t\t\tfor ( i6 = 0; i6 < S6; i6++ ) {\n\t\t\t\t\tfor ( i5 = 0; i5 < S5; i5++ ) {\n\t\t\t\t\t\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\t\t\t\t\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\t\t\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\t\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\t\t\t\t\t\tif ( get( xbuf, ix ) === value ) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tix += dx1;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tix += dx2;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tix += dx3;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tix += dx4;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tix += dx5;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx6;\n\t\t\t\t}\n\t\t\t\tix += dx7;\n\t\t\t}\n\t\t\tix += dx8;\n\t\t}\n\t\tix += dx9;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = includes10d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar numel = require( '@stdlib/ndarray-base-numel' );\nvar vind2bind = require( '@stdlib/ndarray-base-vind2bind' );\n\n\n// VARIABLES //\n\nvar MODE = 'throw';\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {Array} x.accessors - data buffer accessors\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' );\n* var accessors = require( '@stdlib/array-base-accessors' );\n*\n* // Create a data buffer:\n* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'generic',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major',\n* 'accessors': accessors( xbuf ).accessors\n* };\n*\n* // Perform reduction:\n* var out = includesnd( x, 6.0 );\n* // returns true\n*\n* out = includesnd( x, 100.0 );\n* // returns false\n*/\nfunction includesnd( x, value ) {\n\tvar xbuf;\n\tvar ordx;\n\tvar len;\n\tvar get;\n\tvar sh;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i;\n\n\tsh = x.shape;\n\n\t// Compute the total number of elements over which to iterate:\n\tlen = numel( sh );\n\n\t// Cache a reference to the output ndarray data buffer:\n\txbuf = x.data;\n\n\t// Cache a reference to the stride array:\n\tsx = x.strides;\n\n\t// Cache the index of the first indexed element:\n\tox = x.offset;\n\n\t// Cache the array order:\n\tordx = x.order;\n\n\t// Cache accessor:\n\tget = x.accessors[ 0 ];\n\n\t// Iterate over each element based on the linear **view** index, regardless as to how the data is stored in memory...\n\tfor ( i = 0; i < len; i++ ) {\n\t\tix = vind2bind( sh, sx, ox, ordx, i, MODE );\n\t\tif ( get( xbuf, ix ) === value ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = includesnd;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Tests whether a reinterpreted complex number ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {ComplexLike} value - search element\n* @returns {boolean} result\n*\n* @example\n* var Float64Array = require( '@stdlib/array-float64' );\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [];\n*\n* // Define the array strides:\n* var sx = [ 0 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'complex128',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var v = {\n* 're': 1.0,\n* 'im': 2.0\n* };\n* var out = includes0d( x, v );\n* // returns true\n*\n* v = {\n* 're': -3.0,\n* 'im': -4.0\n* };\n* out = includes0d( x, v );\n* // returns false\n*/\nfunction includes0d( x, value ) {\n\treturn ( x.data[ x.offset ] === value.re && x.data[ x.offset+1 ] === value.im ); // eslint-disable-line max-len\n}\n\n\n// EXPORTS //\n\nmodule.exports = includes0d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Tests whether a reinterpreted complex number ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {ComplexLike} value - search element\n* @returns {boolean} result\n*\n* @example\n* var Float64Array = require( '@stdlib/array-float64' );\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 4 ];\n*\n* // Define the array strides:\n* var sx = [ 2 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'complex128',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var v = {\n* 're': 3.0,\n* 'im': 4.0\n* };\n* var out = includes1d( x, v );\n* // returns true\n*\n* v = {\n* 're': -3.0,\n* 'im': -4.0\n* };\n* out = includes1d( x, v );\n* // returns false\n*/\nfunction includes1d( x, value ) {\n\tvar xbuf;\n\tvar dx0;\n\tvar S0;\n\tvar ix;\n\tvar i0;\n\n\t// Note on variable naming convention: S#, dx#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables: dimensions and loop offset (pointer) increments:\n\tS0 = x.shape[ 0 ];\n\tdx0 = x.strides[ 0 ];\n\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\tif ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) {\n\t\t\treturn true;\n\t\t}\n\t\tix += dx0;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = includes1d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar strides2order = require( '@stdlib/ndarray-base-strides2order' );\n\n\n// MAIN //\n\n/**\n* Tests whether a reinterpreted complex number ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {ComplexLike} value - search element\n* @returns {boolean} result\n*\n* @example\n* var Float64Array = require( '@stdlib/array-float64' );\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 4, 2 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'complex128',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var v = {\n* 're': 3.0,\n* 'im': 4.0\n* };\n* var out = includes2d( x, v );\n* // returns true\n*\n* v = {\n* 're': -3.0,\n* 'im': -4.0\n* };\n* out = includes2d( x, v );\n* // returns false\n*/\nfunction includes2d( x, value ) {\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 1 ];\n\t\tS1 = sh[ 0 ];\n\t\tdx0 = sx[ 1 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 0 ] - ( S0*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tif ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tix += dx0;\n\t\t}\n\t\tix += dx1;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = includes2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar strides2order = require( '@stdlib/ndarray-base-strides2order' );\n\n\n// MAIN //\n\n/**\n* Tests whether a reinterpreted complex number ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {ComplexLike} value - search element\n* @returns {boolean} result\n*\n* @example\n* var Float64Array = require( '@stdlib/array-float64' );\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 4, 2 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'complex128',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var v = {\n* 're': 3.0,\n* 'im': 4.0\n* };\n* var out = includes3d( x, v );\n* // returns true\n*\n* v = {\n* 're': -3.0,\n* 'im': -4.0\n* };\n* out = includes3d( x, v );\n* // returns false\n*/\nfunction includes3d( x, value ) {\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 2 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 0 ];\n\t\tdx0 = sx[ 2 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[2] );\n\t\tdx2 = sx[ 0 ] - ( S1*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 2 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[1] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\tif ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tix += dx0;\n\t\t\t}\n\t\t\tix += dx1;\n\t\t}\n\t\tix += dx2;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = includes3d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-len */\n\n'use strict';\n\n// MODULES //\n\nvar strides2order = require( '@stdlib/ndarray-base-strides2order' );\n\n\n// MAIN //\n\n/**\n* Tests whether a reinterpreted complex number ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {ComplexLike} value - search element\n* @returns {boolean} result\n*\n* @example\n* var Float64Array = require( '@stdlib/array-float64' );\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 4, 2 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'complex128',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var v = {\n* 're': 3.0,\n* 'im': 4.0\n* };\n* var out = includes4d( x, v );\n* // returns true\n*\n* v = {\n* 're': -3.0,\n* 'im': -4.0\n* };\n* out = includes4d( x, v );\n* // returns false\n*/\nfunction includes4d( x, value ) {\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 3 ];\n\t\tS1 = sh[ 2 ];\n\t\tS2 = sh[ 1 ];\n\t\tS3 = sh[ 0 ];\n\t\tdx0 = sx[ 3 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 2 ] - ( S0*sx[3] );\n\t\tdx2 = sx[ 1 ] - ( S1*sx[2] );\n\t\tdx3 = sx[ 0 ] - ( S2*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 2 ];\n\t\tS3 = sh[ 3 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[1] );\n\t\tdx3 = sx[ 3 ] - ( S2*sx[2] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\tif ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx0;\n\t\t\t\t}\n\t\t\t\tix += dx1;\n\t\t\t}\n\t\t\tix += dx2;\n\t\t}\n\t\tix += dx3;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = includes4d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MODULES //\n\nvar strides2order = require( '@stdlib/ndarray-base-strides2order' );\n\n\n// MAIN //\n\n/**\n* Tests whether a reinterpreted complex number ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {ComplexLike} value - search element\n* @returns {boolean} result\n*\n* @example\n* var Float64Array = require( '@stdlib/array-float64' );\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 8, 4, 2 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'complex128',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var v = {\n* 're': 3.0,\n* 'im': 4.0\n* };\n* var out = includes5d( x, v );\n* // returns true\n*\n* v = {\n* 're': -3.0,\n* 'im': -4.0\n* };\n* out = includes5d( x, v );\n* // returns false\n*/\nfunction includes5d( x, value ) {\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 4 ];\n\t\tS1 = sh[ 3 ];\n\t\tS2 = sh[ 2 ];\n\t\tS3 = sh[ 1 ];\n\t\tS4 = sh[ 0 ];\n\t\tdx0 = sx[ 4 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 3 ] - ( S0*sx[4] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[3] );\n\t\tdx3 = sx[ 1 ] - ( S2*sx[2] );\n\t\tdx4 = sx[ 0 ] - ( S3*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 2 ];\n\t\tS3 = sh[ 3 ];\n\t\tS4 = sh[ 4 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[1] );\n\t\tdx3 = sx[ 3 ] - ( S2*sx[2] );\n\t\tdx4 = sx[ 4 ] - ( S3*sx[3] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\tif ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx1;\n\t\t\t\t}\n\t\t\t\tix += dx2;\n\t\t\t}\n\t\t\tix += dx3;\n\t\t}\n\t\tix += dx4;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = includes5d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MODULES //\n\nvar strides2order = require( '@stdlib/ndarray-base-strides2order' );\n\n\n// MAIN //\n\n/**\n* Tests whether a reinterpreted complex number ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {ComplexLike} value - search element\n* @returns {boolean} result\n*\n* @example\n* var Float64Array = require( '@stdlib/array-float64' );\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 8, 8, 4, 2 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'complex128',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var v = {\n* 're': 3.0,\n* 'im': 4.0\n* };\n* var out = includes6d( x, v );\n* // returns true\n*\n* v = {\n* 're': -3.0,\n* 'im': -4.0\n* };\n* out = includes6d( x, v );\n* // returns false\n*/\nfunction includes6d( x, value ) {\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar S5;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 5 ];\n\t\tS1 = sh[ 4 ];\n\t\tS2 = sh[ 3 ];\n\t\tS3 = sh[ 2 ];\n\t\tS4 = sh[ 1 ];\n\t\tS5 = sh[ 0 ];\n\t\tdx0 = sx[ 5 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 4 ] - ( S0*sx[5] );\n\t\tdx2 = sx[ 3 ] - ( S1*sx[4] );\n\t\tdx3 = sx[ 2 ] - ( S2*sx[3] );\n\t\tdx4 = sx[ 1 ] - ( S3*sx[2] );\n\t\tdx5 = sx[ 0 ] - ( S4*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 2 ];\n\t\tS3 = sh[ 3 ];\n\t\tS4 = sh[ 4 ];\n\t\tS5 = sh[ 5 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[1] );\n\t\tdx3 = sx[ 3 ] - ( S2*sx[2] );\n\t\tdx4 = sx[ 4 ] - ( S3*sx[3] );\n\t\tdx5 = sx[ 5 ] - ( S4*sx[4] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i5 = 0; i5 < S5; i5++ ) {\n\t\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\t\tif ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tix += dx1;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx2;\n\t\t\t\t}\n\t\t\t\tix += dx3;\n\t\t\t}\n\t\t\tix += dx4;\n\t\t}\n\t\tix += dx5;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = includes6d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MODULES //\n\nvar strides2order = require( '@stdlib/ndarray-base-strides2order' );\n\n\n// MAIN //\n\n/**\n* Tests whether a reinterpreted complex number ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {ComplexLike} value - search element\n* @returns {boolean} result\n*\n* @example\n* var Float64Array = require( '@stdlib/array-float64' );\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 8, 8, 8, 4, 2 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'complex128',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var v = {\n* 're': 3.0,\n* 'im': 4.0\n* };\n* var out = includes7d( x, v );\n* // returns true\n*\n* v = {\n* 're': -3.0,\n* 'im': -4.0\n* };\n* out = includes7d( x, v );\n* // returns false\n*/\nfunction includes7d( x, value ) {\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar dx6;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar S5;\n\tvar S6;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar i6;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 6 ];\n\t\tS1 = sh[ 5 ];\n\t\tS2 = sh[ 4 ];\n\t\tS3 = sh[ 3 ];\n\t\tS4 = sh[ 2 ];\n\t\tS5 = sh[ 1 ];\n\t\tS6 = sh[ 0 ];\n\t\tdx0 = sx[ 6 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 5 ] - ( S0*sx[6] );\n\t\tdx2 = sx[ 4 ] - ( S1*sx[5] );\n\t\tdx3 = sx[ 3 ] - ( S2*sx[4] );\n\t\tdx4 = sx[ 2 ] - ( S3*sx[3] );\n\t\tdx5 = sx[ 1 ] - ( S4*sx[2] );\n\t\tdx6 = sx[ 0 ] - ( S5*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 2 ];\n\t\tS3 = sh[ 3 ];\n\t\tS4 = sh[ 4 ];\n\t\tS5 = sh[ 5 ];\n\t\tS6 = sh[ 6 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[1] );\n\t\tdx3 = sx[ 3 ] - ( S2*sx[2] );\n\t\tdx4 = sx[ 4 ] - ( S3*sx[3] );\n\t\tdx5 = sx[ 5 ] - ( S4*sx[4] );\n\t\tdx6 = sx[ 6 ] - ( S5*sx[5] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i6 = 0; i6 < S6; i6++ ) {\n\t\tfor ( i5 = 0; i5 < S5; i5++ ) {\n\t\t\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\t\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\t\t\tif ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) {\n\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tix += dx1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tix += dx2;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx3;\n\t\t\t\t}\n\t\t\t\tix += dx4;\n\t\t\t}\n\t\t\tix += dx5;\n\t\t}\n\t\tix += dx6;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = includes7d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MODULES //\n\nvar strides2order = require( '@stdlib/ndarray-base-strides2order' );\n\n\n// MAIN //\n\n/**\n* Tests whether a reinterpreted complex number ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {ComplexLike} value - search element\n* @returns {boolean} result\n*\n* @example\n* var Float64Array = require( '@stdlib/array-float64' );\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 8, 8, 8, 8, 4, 2 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'complex128',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var v = {\n* 're': 3.0,\n* 'im': 4.0\n* };\n* var out = includes8d( x, v );\n* // returns true\n*\n* v = {\n* 're': -3.0,\n* 'im': -4.0\n* };\n* out = includes8d( x, v );\n* // returns false\n*/\nfunction includes8d( x, value ) {\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar dx6;\n\tvar dx7;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar S5;\n\tvar S6;\n\tvar S7;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar i6;\n\tvar i7;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 7 ];\n\t\tS1 = sh[ 6 ];\n\t\tS2 = sh[ 5 ];\n\t\tS3 = sh[ 4 ];\n\t\tS4 = sh[ 3 ];\n\t\tS5 = sh[ 2 ];\n\t\tS6 = sh[ 1 ];\n\t\tS7 = sh[ 0 ];\n\t\tdx0 = sx[ 7 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 6 ] - ( S0*sx[7] );\n\t\tdx2 = sx[ 5 ] - ( S1*sx[6] );\n\t\tdx3 = sx[ 4 ] - ( S2*sx[5] );\n\t\tdx4 = sx[ 3 ] - ( S3*sx[4] );\n\t\tdx5 = sx[ 2 ] - ( S4*sx[3] );\n\t\tdx6 = sx[ 1 ] - ( S5*sx[2] );\n\t\tdx7 = sx[ 0 ] - ( S6*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 2 ];\n\t\tS3 = sh[ 3 ];\n\t\tS4 = sh[ 4 ];\n\t\tS5 = sh[ 5 ];\n\t\tS6 = sh[ 6 ];\n\t\tS7 = sh[ 7 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[1] );\n\t\tdx3 = sx[ 3 ] - ( S2*sx[2] );\n\t\tdx4 = sx[ 4 ] - ( S3*sx[3] );\n\t\tdx5 = sx[ 5 ] - ( S4*sx[4] );\n\t\tdx6 = sx[ 6 ] - ( S5*sx[5] );\n\t\tdx7 = sx[ 7 ] - ( S6*sx[6] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i7 = 0; i7 < S7; i7++ ) {\n\t\tfor ( i6 = 0; i6 < S6; i6++ ) {\n\t\t\tfor ( i5 = 0; i5 < S5; i5++ ) {\n\t\t\t\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\t\t\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\t\t\t\tif ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) {\n\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tix += dx1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tix += dx2;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tix += dx3;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx4;\n\t\t\t\t}\n\t\t\t\tix += dx5;\n\t\t\t}\n\t\t\tix += dx6;\n\t\t}\n\t\tix += dx7;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = includes8d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MODULES //\n\nvar strides2order = require( '@stdlib/ndarray-base-strides2order' );\n\n\n// MAIN //\n\n/**\n* Tests whether a reinterpreted complex number ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {ComplexLike} value - search element\n* @returns {boolean} result\n*\n* @example\n* var Float64Array = require( '@stdlib/array-float64' );\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 1, 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 8, 8, 8, 8, 8, 4, 2 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'complex128',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var v = {\n* 're': 3.0,\n* 'im': 4.0\n* };\n* var out = includes9d( x, v );\n* // returns true\n*\n* v = {\n* 're': -3.0,\n* 'im': -4.0\n* };\n* out = includes9d( x, v );\n* // returns false\n*/\nfunction includes9d( x, value ) {\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar dx6;\n\tvar dx7;\n\tvar dx8;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar S5;\n\tvar S6;\n\tvar S7;\n\tvar S8;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar i6;\n\tvar i7;\n\tvar i8;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 8 ];\n\t\tS1 = sh[ 7 ];\n\t\tS2 = sh[ 6 ];\n\t\tS3 = sh[ 5 ];\n\t\tS4 = sh[ 4 ];\n\t\tS5 = sh[ 3 ];\n\t\tS6 = sh[ 2 ];\n\t\tS7 = sh[ 1 ];\n\t\tS8 = sh[ 0 ];\n\t\tdx0 = sx[ 8 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 7 ] - ( S0*sx[8] );\n\t\tdx2 = sx[ 6 ] - ( S1*sx[7] );\n\t\tdx3 = sx[ 5 ] - ( S2*sx[6] );\n\t\tdx4 = sx[ 4 ] - ( S3*sx[5] );\n\t\tdx5 = sx[ 3 ] - ( S4*sx[4] );\n\t\tdx6 = sx[ 2 ] - ( S5*sx[3] );\n\t\tdx7 = sx[ 1 ] - ( S6*sx[2] );\n\t\tdx8 = sx[ 0 ] - ( S7*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 2 ];\n\t\tS3 = sh[ 3 ];\n\t\tS4 = sh[ 4 ];\n\t\tS5 = sh[ 5 ];\n\t\tS6 = sh[ 6 ];\n\t\tS7 = sh[ 7 ];\n\t\tS8 = sh[ 8 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[1] );\n\t\tdx3 = sx[ 3 ] - ( S2*sx[2] );\n\t\tdx4 = sx[ 4 ] - ( S3*sx[3] );\n\t\tdx5 = sx[ 5 ] - ( S4*sx[4] );\n\t\tdx6 = sx[ 6 ] - ( S5*sx[5] );\n\t\tdx7 = sx[ 7 ] - ( S6*sx[6] );\n\t\tdx8 = sx[ 8 ] - ( S7*sx[7] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i8 = 0; i8 < S8; i8++ ) {\n\t\tfor ( i7 = 0; i7 < S7; i7++ ) {\n\t\t\tfor ( i6 = 0; i6 < S6; i6++ ) {\n\t\t\t\tfor ( i5 = 0; i5 < S5; i5++ ) {\n\t\t\t\t\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\t\t\t\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\t\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\t\t\t\t\tif ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) {\n\t\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tix += dx1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tix += dx2;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tix += dx3;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tix += dx4;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx5;\n\t\t\t\t}\n\t\t\t\tix += dx6;\n\t\t\t}\n\t\t\tix += dx7;\n\t\t}\n\t\tix += dx8;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = includes9d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MODULES //\n\nvar strides2order = require( '@stdlib/ndarray-base-strides2order' );\n\n\n// MAIN //\n\n/**\n* Tests whether a reinterpreted complex number ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {ComplexLike} value - search element\n* @returns {boolean} result\n*\n* @example\n* var Float64Array = require( '@stdlib/array-float64' );\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 1, 1, 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 8, 8, 8, 8, 8, 8, 4, 2 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'complex128',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var v = {\n* 're': 3.0,\n* 'im': 4.0\n* };\n* var out = includes10d( x, v );\n* // returns true\n*\n* v = {\n* 're': -3.0,\n* 'im': -4.0\n* };\n* out = includes10d( x, v );\n* // returns false\n*/\nfunction includes10d( x, value ) { // eslint-disable-line max-statements\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar dx6;\n\tvar dx7;\n\tvar dx8;\n\tvar dx9;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar S5;\n\tvar S6;\n\tvar S7;\n\tvar S8;\n\tvar S9;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar i6;\n\tvar i7;\n\tvar i8;\n\tvar i9;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 9 ];\n\t\tS1 = sh[ 8 ];\n\t\tS2 = sh[ 7 ];\n\t\tS3 = sh[ 6 ];\n\t\tS4 = sh[ 5 ];\n\t\tS5 = sh[ 4 ];\n\t\tS6 = sh[ 3 ];\n\t\tS7 = sh[ 2 ];\n\t\tS8 = sh[ 1 ];\n\t\tS9 = sh[ 0 ];\n\t\tdx0 = sx[ 9 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 8 ] - ( S0*sx[9] );\n\t\tdx2 = sx[ 7 ] - ( S1*sx[8] );\n\t\tdx3 = sx[ 6 ] - ( S2*sx[7] );\n\t\tdx4 = sx[ 5 ] - ( S3*sx[6] );\n\t\tdx5 = sx[ 4 ] - ( S4*sx[5] );\n\t\tdx6 = sx[ 3 ] - ( S5*sx[4] );\n\t\tdx7 = sx[ 2 ] - ( S6*sx[3] );\n\t\tdx8 = sx[ 1 ] - ( S7*sx[2] );\n\t\tdx9 = sx[ 0 ] - ( S8*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 2 ];\n\t\tS3 = sh[ 3 ];\n\t\tS4 = sh[ 4 ];\n\t\tS5 = sh[ 5 ];\n\t\tS6 = sh[ 6 ];\n\t\tS7 = sh[ 7 ];\n\t\tS8 = sh[ 8 ];\n\t\tS9 = sh[ 9 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[1] );\n\t\tdx3 = sx[ 3 ] - ( S2*sx[2] );\n\t\tdx4 = sx[ 4 ] - ( S3*sx[3] );\n\t\tdx5 = sx[ 5 ] - ( S4*sx[4] );\n\t\tdx6 = sx[ 6 ] - ( S5*sx[5] );\n\t\tdx7 = sx[ 7 ] - ( S6*sx[6] );\n\t\tdx8 = sx[ 8 ] - ( S7*sx[7] );\n\t\tdx9 = sx[ 9 ] - ( S8*sx[8] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i9 = 0; i9 < S9; i9++ ) {\n\t\tfor ( i8 = 0; i8 < S8; i8++ ) {\n\t\t\tfor ( i7 = 0; i7 < S7; i7++ ) {\n\t\t\t\tfor ( i6 = 0; i6 < S6; i6++ ) {\n\t\t\t\t\tfor ( i5 = 0; i5 < S5; i5++ ) {\n\t\t\t\t\t\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\t\t\t\t\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\t\t\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\t\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\t\t\t\t\t\tif ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tix += dx1;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tix += dx2;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tix += dx3;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tix += dx4;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tix += dx5;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx6;\n\t\t\t\t}\n\t\t\t\tix += dx7;\n\t\t\t}\n\t\t\tix += dx8;\n\t\t}\n\t\tix += dx9;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = includes10d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar numel = require( '@stdlib/ndarray-base-numel' );\nvar vind2bind = require( '@stdlib/ndarray-base-vind2bind' );\n\n\n// VARIABLES //\n\nvar MODE = 'throw';\n\n\n// MAIN //\n\n/**\n* Tests whether a reinterpreted complex number ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {ComplexLike} value - search element\n* @returns {boolean} result\n*\n* @example\n* var Float64Array = require( '@stdlib/array-float64' );\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 4, 2 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'complex128',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var v = {\n* 're': 3.0,\n* 'im': 4.0\n* };\n* var out = includesnd( x, v );\n* // returns true\n*\n* v = {\n* 're': -3.0,\n* 'im': -4.0\n* };\n* out = includesnd( x, v );\n* // returns false\n*/\nfunction includesnd( x, value ) {\n\tvar xbuf;\n\tvar ordx;\n\tvar len;\n\tvar sh;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i;\n\n\tsh = x.shape;\n\n\t// Compute the total number of elements over which to iterate:\n\tlen = numel( sh );\n\n\t// Cache a reference to the output ndarray data buffer:\n\txbuf = x.data;\n\n\t// Cache a reference to the stride array:\n\tsx = x.strides;\n\n\t// Cache the index of the first indexed element:\n\tox = x.offset;\n\n\t// Cache the array order:\n\tordx = x.order;\n\n\t// Iterate over each element based on the linear **view** index, regardless as to how the data is stored in memory...\n\tfor ( i = 0; i < len; i++ ) {\n\t\tix = vind2bind( sh, sx, ox, ordx, i, MODE );\n\t\tif ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = includesnd;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* var Float64Array = require( '@stdlib/array-float64' );\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [];\n*\n* // Define the array strides:\n* var sx = [ 0 ];\n*\n* // Define the index offset:\n* var ox = 1;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'float64',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var out = includes0d( x, 2.0 );\n* // returns true\n*\n* out = includes0d( x, 100.0 );\n* // returns false\n*/\nfunction includes0d( x, value ) {\n\treturn ( x.data[ x.offset ] === value );\n}\n\n\n// EXPORTS //\n\nmodule.exports = includes0d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* var Float64Array = require( '@stdlib/array-float64' );\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 4 ];\n*\n* // Define the array strides:\n* var sx = [ 2 ];\n*\n* // Define the index offset:\n* var ox = 1;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'float64',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var out = includes1d( x, 6.0 );\n* // returns true\n*\n* out = includes1d( x, 100.0 );\n* // returns false\n*/\nfunction includes1d( x, value ) {\n\tvar xbuf;\n\tvar dx0;\n\tvar S0;\n\tvar ix;\n\tvar i0;\n\n\t// Note on variable naming convention: S#, dx#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables: dimensions and loop offset (pointer) increments:\n\tS0 = x.shape[ 0 ];\n\tdx0 = x.strides[ 0 ];\n\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\tif ( xbuf[ ix ] === value ) {\n\t\t\treturn true;\n\t\t}\n\t\tix += dx0;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = includes1d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar strides2order = require( '@stdlib/ndarray-base-strides2order' );\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* var Float64Array = require( '@stdlib/array-float64' );\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'float64',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var out = includes2d( x, 6.0 );\n* // returns true\n*\n* out = includes2d( x, 100.0 );\n* // returns false\n*/\nfunction includes2d( x, value ) {\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 1 ];\n\t\tS1 = sh[ 0 ];\n\t\tdx0 = sx[ 1 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 0 ] - ( S0*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tif ( xbuf[ ix ] === value ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tix += dx0;\n\t\t}\n\t\tix += dx1;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = includes2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar strides2order = require( '@stdlib/ndarray-base-strides2order' );\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* var Float64Array = require( '@stdlib/array-float64' );\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 3, 1, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 4, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'float64',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var out = includes3d( x, 6.0 );\n* // returns true\n*\n* out = includes3d( x, 100.0 );\n* // returns false\n*/\nfunction includes3d( x, value ) {\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 2 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 0 ];\n\t\tdx0 = sx[ 2 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[2] );\n\t\tdx2 = sx[ 0 ] - ( S1*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 2 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[1] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\tif ( xbuf[ ix ] === value ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tix += dx0;\n\t\t\t}\n\t\t\tix += dx1;\n\t\t}\n\t\tix += dx2;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = includes3d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar strides2order = require( '@stdlib/ndarray-base-strides2order' );\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* var Float64Array = require( '@stdlib/array-float64' );\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 3, 1, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 12, 4, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'float64',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var out = includes4d( x, 6.0 );\n* // returns true\n*\n* out = includes4d( x, 100.0 );\n* // returns false\n*/\nfunction includes4d( x, value ) {\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 3 ];\n\t\tS1 = sh[ 2 ];\n\t\tS2 = sh[ 1 ];\n\t\tS3 = sh[ 0 ];\n\t\tdx0 = sx[ 3 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 2 ] - ( S0*sx[3] );\n\t\tdx2 = sx[ 1 ] - ( S1*sx[2] );\n\t\tdx3 = sx[ 0 ] - ( S2*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 2 ];\n\t\tS3 = sh[ 3 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[1] );\n\t\tdx3 = sx[ 3 ] - ( S2*sx[2] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\tif ( xbuf[ ix ] === value ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx0;\n\t\t\t\t}\n\t\t\t\tix += dx1;\n\t\t\t}\n\t\t\tix += dx2;\n\t\t}\n\t\tix += dx3;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = includes4d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth */\n\n'use strict';\n\n// MODULES //\n\nvar strides2order = require( '@stdlib/ndarray-base-strides2order' );\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* var Float64Array = require( '@stdlib/array-float64' );\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 3, 1, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 12, 12, 4, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'float64',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var out = includes5d( x, 6.0 );\n* // returns true\n*\n* out = includes5d( x, 100.0 );\n* // returns false\n*/\nfunction includes5d( x, value ) {\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 4 ];\n\t\tS1 = sh[ 3 ];\n\t\tS2 = sh[ 2 ];\n\t\tS3 = sh[ 1 ];\n\t\tS4 = sh[ 0 ];\n\t\tdx0 = sx[ 4 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 3 ] - ( S0*sx[4] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[3] );\n\t\tdx3 = sx[ 1 ] - ( S2*sx[2] );\n\t\tdx4 = sx[ 0 ] - ( S3*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 2 ];\n\t\tS3 = sh[ 3 ];\n\t\tS4 = sh[ 4 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[1] );\n\t\tdx3 = sx[ 3 ] - ( S2*sx[2] );\n\t\tdx4 = sx[ 4 ] - ( S3*sx[3] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\tif ( xbuf[ ix ] === value ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx1;\n\t\t\t\t}\n\t\t\t\tix += dx2;\n\t\t\t}\n\t\t\tix += dx3;\n\t\t}\n\t\tix += dx4;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = includes5d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth */\n\n'use strict';\n\n// MODULES //\n\nvar strides2order = require( '@stdlib/ndarray-base-strides2order' );\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* var Float64Array = require( '@stdlib/array-float64' );\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 3, 1, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 12, 12, 12, 4, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'float64',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var out = includes6d( x, 6.0 );\n* // returns true\n*\n* out = includes6d( x, 100.0 );\n* // returns false\n*/\nfunction includes6d( x, value ) {\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar S5;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 5 ];\n\t\tS1 = sh[ 4 ];\n\t\tS2 = sh[ 3 ];\n\t\tS3 = sh[ 2 ];\n\t\tS4 = sh[ 1 ];\n\t\tS5 = sh[ 0 ];\n\t\tdx0 = sx[ 5 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 4 ] - ( S0*sx[5] );\n\t\tdx2 = sx[ 3 ] - ( S1*sx[4] );\n\t\tdx3 = sx[ 2 ] - ( S2*sx[3] );\n\t\tdx4 = sx[ 1 ] - ( S3*sx[2] );\n\t\tdx5 = sx[ 0 ] - ( S4*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 2 ];\n\t\tS3 = sh[ 3 ];\n\t\tS4 = sh[ 4 ];\n\t\tS5 = sh[ 5 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[1] );\n\t\tdx3 = sx[ 3 ] - ( S2*sx[2] );\n\t\tdx4 = sx[ 4 ] - ( S3*sx[3] );\n\t\tdx5 = sx[ 5 ] - ( S4*sx[4] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i5 = 0; i5 < S5; i5++ ) {\n\t\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\t\tif ( xbuf[ ix ] === value ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tix += dx1;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx2;\n\t\t\t\t}\n\t\t\t\tix += dx3;\n\t\t\t}\n\t\t\tix += dx4;\n\t\t}\n\t\tix += dx5;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = includes6d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth */\n\n'use strict';\n\n// MODULES //\n\nvar strides2order = require( '@stdlib/ndarray-base-strides2order' );\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* var Float64Array = require( '@stdlib/array-float64' );\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 3, 1, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 12, 12, 12, 12, 4, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'float64',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var out = includes7d( x, 6.0 );\n* // returns true\n*\n* out = includes7d( x, 100.0 );\n* // returns false\n*/\nfunction includes7d( x, value ) {\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar dx6;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar S5;\n\tvar S6;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar i6;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 6 ];\n\t\tS1 = sh[ 5 ];\n\t\tS2 = sh[ 4 ];\n\t\tS3 = sh[ 3 ];\n\t\tS4 = sh[ 2 ];\n\t\tS5 = sh[ 1 ];\n\t\tS6 = sh[ 0 ];\n\t\tdx0 = sx[ 6 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 5 ] - ( S0*sx[6] );\n\t\tdx2 = sx[ 4 ] - ( S1*sx[5] );\n\t\tdx3 = sx[ 3 ] - ( S2*sx[4] );\n\t\tdx4 = sx[ 2 ] - ( S3*sx[3] );\n\t\tdx5 = sx[ 1 ] - ( S4*sx[2] );\n\t\tdx6 = sx[ 0 ] - ( S5*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 2 ];\n\t\tS3 = sh[ 3 ];\n\t\tS4 = sh[ 4 ];\n\t\tS5 = sh[ 5 ];\n\t\tS6 = sh[ 6 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[1] );\n\t\tdx3 = sx[ 3 ] - ( S2*sx[2] );\n\t\tdx4 = sx[ 4 ] - ( S3*sx[3] );\n\t\tdx5 = sx[ 5 ] - ( S4*sx[4] );\n\t\tdx6 = sx[ 6 ] - ( S5*sx[5] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i6 = 0; i6 < S6; i6++ ) {\n\t\tfor ( i5 = 0; i5 < S5; i5++ ) {\n\t\t\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\t\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\t\t\tif ( xbuf[ ix ] === value ) {\n\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tix += dx1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tix += dx2;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx3;\n\t\t\t\t}\n\t\t\t\tix += dx4;\n\t\t\t}\n\t\t\tix += dx5;\n\t\t}\n\t\tix += dx6;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = includes7d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth */\n\n'use strict';\n\n// MODULES //\n\nvar strides2order = require( '@stdlib/ndarray-base-strides2order' );\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* var Float64Array = require( '@stdlib/array-float64' );\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 1, 3, 1, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 12, 12, 12, 12, 12, 4, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'float64',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var out = includes8d( x, 6.0 );\n* // returns true\n*\n* out = includes8d( x, 100.0 );\n* // returns false\n*/\nfunction includes8d( x, value ) {\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar dx6;\n\tvar dx7;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar S5;\n\tvar S6;\n\tvar S7;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar i6;\n\tvar i7;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 7 ];\n\t\tS1 = sh[ 6 ];\n\t\tS2 = sh[ 5 ];\n\t\tS3 = sh[ 4 ];\n\t\tS4 = sh[ 3 ];\n\t\tS5 = sh[ 2 ];\n\t\tS6 = sh[ 1 ];\n\t\tS7 = sh[ 0 ];\n\t\tdx0 = sx[ 7 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 6 ] - ( S0*sx[7] );\n\t\tdx2 = sx[ 5 ] - ( S1*sx[6] );\n\t\tdx3 = sx[ 4 ] - ( S2*sx[5] );\n\t\tdx4 = sx[ 3 ] - ( S3*sx[4] );\n\t\tdx5 = sx[ 2 ] - ( S4*sx[3] );\n\t\tdx6 = sx[ 1 ] - ( S5*sx[2] );\n\t\tdx7 = sx[ 0 ] - ( S6*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 2 ];\n\t\tS3 = sh[ 3 ];\n\t\tS4 = sh[ 4 ];\n\t\tS5 = sh[ 5 ];\n\t\tS6 = sh[ 6 ];\n\t\tS7 = sh[ 7 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[1] );\n\t\tdx3 = sx[ 3 ] - ( S2*sx[2] );\n\t\tdx4 = sx[ 4 ] - ( S3*sx[3] );\n\t\tdx5 = sx[ 5 ] - ( S4*sx[4] );\n\t\tdx6 = sx[ 6 ] - ( S5*sx[5] );\n\t\tdx7 = sx[ 7 ] - ( S6*sx[6] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i7 = 0; i7 < S7; i7++ ) {\n\t\tfor ( i6 = 0; i6 < S6; i6++ ) {\n\t\t\tfor ( i5 = 0; i5 < S5; i5++ ) {\n\t\t\t\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\t\t\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\t\t\t\tif ( xbuf[ ix ] === value ) {\n\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tix += dx1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tix += dx2;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tix += dx3;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx4;\n\t\t\t\t}\n\t\t\t\tix += dx5;\n\t\t\t}\n\t\t\tix += dx6;\n\t\t}\n\t\tix += dx7;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = includes8d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth */\n\n'use strict';\n\n// MODULES //\n\nvar strides2order = require( '@stdlib/ndarray-base-strides2order' );\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* var Float64Array = require( '@stdlib/array-float64' );\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 1, 1, 3, 1, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 12, 12, 12, 12, 12, 12, 4, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'float64',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var out = includes9d( x, 6.0 );\n* // returns true\n*\n* out = includes9d( x, 100.0 );\n* // returns false\n*/\nfunction includes9d( x, value ) {\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar dx6;\n\tvar dx7;\n\tvar dx8;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar S5;\n\tvar S6;\n\tvar S7;\n\tvar S8;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar i6;\n\tvar i7;\n\tvar i8;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 8 ];\n\t\tS1 = sh[ 7 ];\n\t\tS2 = sh[ 6 ];\n\t\tS3 = sh[ 5 ];\n\t\tS4 = sh[ 4 ];\n\t\tS5 = sh[ 3 ];\n\t\tS6 = sh[ 2 ];\n\t\tS7 = sh[ 1 ];\n\t\tS8 = sh[ 0 ];\n\t\tdx0 = sx[ 8 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 7 ] - ( S0*sx[8] );\n\t\tdx2 = sx[ 6 ] - ( S1*sx[7] );\n\t\tdx3 = sx[ 5 ] - ( S2*sx[6] );\n\t\tdx4 = sx[ 4 ] - ( S3*sx[5] );\n\t\tdx5 = sx[ 3 ] - ( S4*sx[4] );\n\t\tdx6 = sx[ 2 ] - ( S5*sx[3] );\n\t\tdx7 = sx[ 1 ] - ( S6*sx[2] );\n\t\tdx8 = sx[ 0 ] - ( S7*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 2 ];\n\t\tS3 = sh[ 3 ];\n\t\tS4 = sh[ 4 ];\n\t\tS5 = sh[ 5 ];\n\t\tS6 = sh[ 6 ];\n\t\tS7 = sh[ 7 ];\n\t\tS8 = sh[ 8 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[1] );\n\t\tdx3 = sx[ 3 ] - ( S2*sx[2] );\n\t\tdx4 = sx[ 4 ] - ( S3*sx[3] );\n\t\tdx5 = sx[ 5 ] - ( S4*sx[4] );\n\t\tdx6 = sx[ 6 ] - ( S5*sx[5] );\n\t\tdx7 = sx[ 7 ] - ( S6*sx[6] );\n\t\tdx8 = sx[ 8 ] - ( S7*sx[7] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i8 = 0; i8 < S8; i8++ ) {\n\t\tfor ( i7 = 0; i7 < S7; i7++ ) {\n\t\t\tfor ( i6 = 0; i6 < S6; i6++ ) {\n\t\t\t\tfor ( i5 = 0; i5 < S5; i5++ ) {\n\t\t\t\t\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\t\t\t\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\t\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\t\t\t\t\tif ( xbuf[ ix ] === value ) {\n\t\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tix += dx1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tix += dx2;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tix += dx3;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tix += dx4;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx5;\n\t\t\t\t}\n\t\t\t\tix += dx6;\n\t\t\t}\n\t\t\tix += dx7;\n\t\t}\n\t\tix += dx8;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = includes9d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth */\n\n'use strict';\n\n// MODULES //\n\nvar strides2order = require( '@stdlib/ndarray-base-strides2order' );\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* var Float64Array = require( '@stdlib/array-float64' );\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 1, 1, 1, 3, 1, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 12, 12, 12, 12, 12, 12, 12, 4, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'float64',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var out = includes10d( x, 6.0 );\n* // returns true\n*\n* out = includes10d( x, 100.0 );\n* // returns false\n*/\nfunction includes10d( x, value ) { // eslint-disable-line max-statements\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar dx6;\n\tvar dx7;\n\tvar dx8;\n\tvar dx9;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar S5;\n\tvar S6;\n\tvar S7;\n\tvar S8;\n\tvar S9;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar i6;\n\tvar i7;\n\tvar i8;\n\tvar i9;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 9 ];\n\t\tS1 = sh[ 8 ];\n\t\tS2 = sh[ 7 ];\n\t\tS3 = sh[ 6 ];\n\t\tS4 = sh[ 5 ];\n\t\tS5 = sh[ 4 ];\n\t\tS6 = sh[ 3 ];\n\t\tS7 = sh[ 2 ];\n\t\tS8 = sh[ 1 ];\n\t\tS9 = sh[ 0 ];\n\t\tdx0 = sx[ 9 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 8 ] - ( S0*sx[9] );\n\t\tdx2 = sx[ 7 ] - ( S1*sx[8] );\n\t\tdx3 = sx[ 6 ] - ( S2*sx[7] );\n\t\tdx4 = sx[ 5 ] - ( S3*sx[6] );\n\t\tdx5 = sx[ 4 ] - ( S4*sx[5] );\n\t\tdx6 = sx[ 3 ] - ( S5*sx[4] );\n\t\tdx7 = sx[ 2 ] - ( S6*sx[3] );\n\t\tdx8 = sx[ 1 ] - ( S7*sx[2] );\n\t\tdx9 = sx[ 0 ] - ( S8*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 2 ];\n\t\tS3 = sh[ 3 ];\n\t\tS4 = sh[ 4 ];\n\t\tS5 = sh[ 5 ];\n\t\tS6 = sh[ 6 ];\n\t\tS7 = sh[ 7 ];\n\t\tS8 = sh[ 8 ];\n\t\tS9 = sh[ 9 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[1] );\n\t\tdx3 = sx[ 3 ] - ( S2*sx[2] );\n\t\tdx4 = sx[ 4 ] - ( S3*sx[3] );\n\t\tdx5 = sx[ 5 ] - ( S4*sx[4] );\n\t\tdx6 = sx[ 6 ] - ( S5*sx[5] );\n\t\tdx7 = sx[ 7 ] - ( S6*sx[6] );\n\t\tdx8 = sx[ 8 ] - ( S7*sx[7] );\n\t\tdx9 = sx[ 9 ] - ( S8*sx[8] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i9 = 0; i9 < S9; i9++ ) {\n\t\tfor ( i8 = 0; i8 < S8; i8++ ) {\n\t\t\tfor ( i7 = 0; i7 < S7; i7++ ) {\n\t\t\t\tfor ( i6 = 0; i6 < S6; i6++ ) {\n\t\t\t\t\tfor ( i5 = 0; i5 < S5; i5++ ) {\n\t\t\t\t\t\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\t\t\t\t\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\t\t\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\t\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\t\t\t\t\t\tif ( xbuf[ ix ] === value ) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tix += dx1;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tix += dx2;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tix += dx3;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tix += dx4;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tix += dx5;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx6;\n\t\t\t\t}\n\t\t\t\tix += dx7;\n\t\t\t}\n\t\t\tix += dx8;\n\t\t}\n\t\tix += dx9;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = includes10d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar numel = require( '@stdlib/ndarray-base-numel' );\nvar vind2bind = require( '@stdlib/ndarray-base-vind2bind' );\n\n\n// VARIABLES //\n\nvar MODE = 'throw';\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* var Float64Array = require( '@stdlib/array-float64' );\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'float64',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var out = includesnd( x, 6.0 );\n* // returns true\n*\n* out = includesnd( x, 100.0 );\n* // returns false\n*/\nfunction includesnd( x, value ) {\n\tvar xbuf;\n\tvar ordx;\n\tvar len;\n\tvar sh;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i;\n\n\tsh = x.shape;\n\n\t// Compute the total number of elements over which to iterate:\n\tlen = numel( sh );\n\n\t// Cache a reference to the output ndarray data buffer:\n\txbuf = x.data;\n\n\t// Cache a reference to the stride array:\n\tsx = x.strides;\n\n\t// Cache the index of the first indexed element:\n\tox = x.offset;\n\n\t// Cache the array order:\n\tordx = x.order;\n\n\t// Iterate over each element based on the linear **view** index, regardless as to how the data is stored in memory...\n\tfor ( i = 0; i < len; i++ ) {\n\t\tix = vind2bind( sh, sx, ox, ordx, i, MODE );\n\t\tif ( xbuf[ ix ] === value ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = includesnd;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isComplexArray = require( '@stdlib/array-base-assert-is-complex-typed-array' );\nvar isBooleanArray = require( '@stdlib/array-base-assert-is-booleanarray' );\nvar isBoolean = require( '@stdlib/assert-is-boolean' ).isPrimitive;\nvar isComplexLike = require( '@stdlib/assert-is-complex-like' );\nvar iterationOrder = require( '@stdlib/ndarray-base-iteration-order' );\nvar minmaxViewBufferIndex = require( '@stdlib/ndarray-base-minmax-view-buffer-index' );\nvar ndarray2object = require( '@stdlib/ndarray-base-ndarraylike2object' );\nvar reinterpretComplex = require( '@stdlib/strided-base-reinterpret-complex' );\nvar reinterpretBoolean = require( '@stdlib/strided-base-reinterpret-boolean' );\nvar real = require( '@stdlib/complex-float64-real' );\nvar imag = require( '@stdlib/complex-float64-imag' );\nvar gscal = require( '@stdlib/blas-base-gscal' );\nvar blockedaccessorincludes2d = require( './2d_blocked_accessors.js' );\nvar blockedaccessorincludes3d = require( './3d_blocked_accessors.js' );\nvar blockedaccessorincludes4d = require( './4d_blocked_accessors.js' );\nvar blockedaccessorincludes5d = require( './5d_blocked_accessors.js' );\nvar blockedaccessorincludes6d = require( './6d_blocked_accessors.js' );\nvar blockedaccessorincludes7d = require( './7d_blocked_accessors.js' );\nvar blockedaccessorincludes8d = require( './8d_blocked_accessors.js' );\nvar blockedaccessorincludes9d = require( './9d_blocked_accessors.js' );\nvar blockedaccessorincludes10d = require( './10d_blocked_accessors.js' ); // eslint-disable-line id-length\nvar blockedcomplexincludes2d = require( './2d_blocked_complex.js' );\nvar blockedcomplexincludes3d = require( './3d_blocked_complex.js' );\nvar blockedcomplexincludes4d = require( './4d_blocked_complex.js' );\nvar blockedcomplexincludes5d = require( './5d_blocked_complex.js' );\nvar blockedcomplexincludes6d = require( './6d_blocked_complex.js' );\nvar blockedcomplexincludes7d = require( './7d_blocked_complex.js' );\nvar blockedcomplexincludes8d = require( './8d_blocked_complex.js' );\nvar blockedcomplexincludes9d = require( './9d_blocked_complex.js' );\nvar blockedcomplexincludes10d = require( './10d_blocked_complex.js' );\nvar blockedincludes2d = require( './2d_blocked.js' );\nvar blockedincludes3d = require( './3d_blocked.js' );\nvar blockedincludes4d = require( './4d_blocked.js' );\nvar blockedincludes5d = require( './5d_blocked.js' );\nvar blockedincludes6d = require( './6d_blocked.js' );\nvar blockedincludes7d = require( './7d_blocked.js' );\nvar blockedincludes8d = require( './8d_blocked.js' );\nvar blockedincludes9d = require( './9d_blocked.js' );\nvar blockedincludes10d = require( './10d_blocked.js' );\nvar accessorincludes0d = require( './0d_accessors.js' );\nvar accessorincludes1d = require( './1d_accessors.js' );\nvar accessorincludes2d = require( './2d_accessors.js' );\nvar accessorincludes3d = require( './3d_accessors.js' );\nvar accessorincludes4d = require( './4d_accessors.js' );\nvar accessorincludes5d = require( './5d_accessors.js' );\nvar accessorincludes6d = require( './6d_accessors.js' );\nvar accessorincludes7d = require( './7d_accessors.js' );\nvar accessorincludes8d = require( './8d_accessors.js' );\nvar accessorincludes9d = require( './9d_accessors.js' );\nvar accessorincludes10d = require( './10d_accessors.js' );\nvar accessorincludesnd = require( './nd_accessors.js' );\nvar complexincludes0d = require( './0d_complex.js' );\nvar complexincludes1d = require( './1d_complex.js' );\nvar complexincludes2d = require( './2d_complex.js' );\nvar complexincludes3d = require( './3d_complex.js' );\nvar complexincludes4d = require( './4d_complex.js' );\nvar complexincludes5d = require( './5d_complex.js' );\nvar complexincludes6d = require( './6d_complex.js' );\nvar complexincludes7d = require( './7d_complex.js' );\nvar complexincludes8d = require( './8d_complex.js' );\nvar complexincludes9d = require( './9d_complex.js' );\nvar complexincludes10d = require( './10d_complex.js' );\nvar complexincludesnd = require( './nd_complex.js' );\nvar includes0d = require( './0d.js' );\nvar includes1d = require( './1d.js' );\nvar includes2d = require( './2d.js' );\nvar includes3d = require( './3d.js' );\nvar includes4d = require( './4d.js' );\nvar includes5d = require( './5d.js' );\nvar includes6d = require( './6d.js' );\nvar includes7d = require( './7d.js' );\nvar includes8d = require( './8d.js' );\nvar includes9d = require( './9d.js' );\nvar includes10d = require( './10d.js' );\nvar includesnd = require( './nd.js' );\n\n\n// VARIABLES //\n\nvar INCLUDES = [\n\tincludes0d,\n\tincludes1d,\n\tincludes2d,\n\tincludes3d,\n\tincludes4d,\n\tincludes5d,\n\tincludes6d,\n\tincludes7d,\n\tincludes8d,\n\tincludes9d,\n\tincludes10d\n];\nvar ACCESSOR_INCLUDES = [\n\taccessorincludes0d,\n\taccessorincludes1d,\n\taccessorincludes2d,\n\taccessorincludes3d,\n\taccessorincludes4d,\n\taccessorincludes5d,\n\taccessorincludes6d,\n\taccessorincludes7d,\n\taccessorincludes8d,\n\taccessorincludes9d,\n\taccessorincludes10d\n];\nvar COMPLEX_INCLUDES = [\n\tcomplexincludes0d,\n\tcomplexincludes1d,\n\tcomplexincludes2d,\n\tcomplexincludes3d,\n\tcomplexincludes4d,\n\tcomplexincludes5d,\n\tcomplexincludes6d,\n\tcomplexincludes7d,\n\tcomplexincludes8d,\n\tcomplexincludes9d,\n\tcomplexincludes10d\n];\nvar BLOCKED_INCLUDES = [\n\tblockedincludes2d, // 0\n\tblockedincludes3d,\n\tblockedincludes4d,\n\tblockedincludes5d,\n\tblockedincludes6d,\n\tblockedincludes7d,\n\tblockedincludes8d,\n\tblockedincludes9d,\n\tblockedincludes10d // 8\n];\nvar BLOCKED_ACCESSOR_INCLUDES = [\n\tblockedaccessorincludes2d, // 0\n\tblockedaccessorincludes3d,\n\tblockedaccessorincludes4d,\n\tblockedaccessorincludes5d,\n\tblockedaccessorincludes6d,\n\tblockedaccessorincludes7d,\n\tblockedaccessorincludes8d,\n\tblockedaccessorincludes9d,\n\tblockedaccessorincludes10d // 8\n];\nvar BLOCKED_COMPLEX_INCLUDES = [\n\tblockedcomplexincludes2d, // 0\n\tblockedcomplexincludes3d,\n\tblockedcomplexincludes4d,\n\tblockedcomplexincludes5d,\n\tblockedcomplexincludes6d,\n\tblockedcomplexincludes7d,\n\tblockedcomplexincludes8d,\n\tblockedcomplexincludes9d,\n\tblockedcomplexincludes10d // 8\n];\nvar MAX_DIMS = INCLUDES.length - 1;\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value.\n*\n* ## Notes\n*\n* - A provided ndarray should be an object with the following properties:\n*\n* - **dtype**: data type.\n* - **data**: data buffer.\n* - **shape**: dimensions.\n* - **strides**: stride lengths.\n* - **offset**: index offset.\n* - **order**: specifies whether an ndarray is row-major (C-style) or column major (Fortran-style).\n*\n* @param {ArrayLikeObject} arrays - array-like object containing one input array and a zero-dimensional search element array\n* @returns {boolean} result\n*\n* @example\n* var Float64Array = require( '@stdlib/array-float64' );\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 3, 1, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 4, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'float64',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Create the search element ndarray-like object:\n* var searchElement = {\n* 'dtype': 'float64',\n* 'data': new Float64Array( [ 2.0 ] ),\n* 'shape': [],\n* 'strides': [ 0 ],\n* 'offset': 0,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var out = includes( [ x, searchElement ] );\n* // returns true\n*/\nfunction includes( arrays ) {\n\tvar isCmplx;\n\tvar value;\n\tvar ndims;\n\tvar xmmv;\n\tvar shx;\n\tvar iox;\n\tvar len;\n\tvar sx;\n\tvar ox;\n\tvar ns;\n\tvar x;\n\tvar d;\n\tvar i;\n\n\t// Unpack the ndarrays and standardize ndarray meta data:\n\tx = ndarray2object( arrays[ 0 ] );\n\tvalue = ndarray2object( arrays[ 1 ] );\n\n\tshx = x.shape;\n\tndims = shx.length;\n\n\t// Resolve the search element as a scalar:\n\tvalue = value.accessors[ 0 ]( value.data, value.offset );\n\n\t// Check for known array types which can be reinterpreted for better iteration performance...\n\tif ( isBooleanArray( x.data ) ) {\n\t\tif ( !isBoolean( value ) ) {\n\t\t\treturn false;\n\t\t}\n\t\tx.data = reinterpretBoolean( x.data, 0 );\n\t\tx.accessorProtocol = false;\n\t} else if ( isComplexArray( x.data ) ) {\n\t\tif ( !isComplexLike( value ) ) {\n\t\t\treturn false;\n\t\t}\n\t\t// TODO: consider adding something like `complex/base/complex2object` where we normalize a user-provided complex-like object to a standardized object shape\n\t\tvalue = {\n\t\t\t're': real( value ),\n\t\t\t'im': imag( value )\n\t\t};\n\t\tx.data = reinterpretComplex( x.data, 0 );\n\t\tx.accessorProtocol = false;\n\t\tx.strides = gscal( ndims, 2, x.strides, 1 );\n\t\tx.offset *= 2;\n\t\tisCmplx = true;\n\t}\n\t// Determine whether we can avoid iteration altogether...\n\tif ( ndims === 0 ) {\n\t\tif ( x.accessorProtocol ) {\n\t\t\treturn ACCESSOR_INCLUDES[ ndims ]( x, value );\n\t\t}\n\t\tif ( isCmplx ) {\n\t\t\treturn COMPLEX_INCLUDES[ ndims ]( x, value );\n\t\t}\n\t\treturn INCLUDES[ ndims ]( x, value );\n\t}\n\t// Compute the number of elements and the number of singleton dimensions...\n\tlen = 1; // number of elements\n\tns = 0; // number of singleton dimensions\n\tfor ( i = 0; i < ndims; i++ ) {\n\t\td = shx[ i ];\n\n\t\t// Note that, if one of the dimensions is `0`, the length will be `0`...\n\t\tlen *= d;\n\n\t\t// Check whether the current dimension is a singleton dimension...\n\t\tif ( d === 1 ) {\n\t\t\tns += 1;\n\t\t}\n\t}\n\t// Check whether we were provided an empty ndarray...\n\tif ( len === 0 ) {\n\t\t// An empty array is a trivial case in which an array does not contain a search element:\n\t\treturn false;\n\t}\n\t// Determine whether the ndarray is one-dimensional and thus readily translates to a one-dimensional strided array...\n\tif ( ndims === 1 ) {\n\t\tif ( x.accessorProtocol ) {\n\t\t\treturn ACCESSOR_INCLUDES[ ndims ]( x, value );\n\t\t}\n\t\tif ( isCmplx ) {\n\t\t\treturn COMPLEX_INCLUDES[ ndims ]( x, value );\n\t\t}\n\t\treturn INCLUDES[ ndims ]( x, value );\n\t}\n\tsx = x.strides;\n\n\t// Determine whether the ndarray has only **one** non-singleton dimension (e.g., ndims=4, shape=[10,1,1,1]) so that we can treat an ndarray as being equivalent to a one-dimensional strided array...\n\tif ( ns === ndims-1 ) {\n\t\t// Get the index of the non-singleton dimension...\n\t\tfor ( i = 0; i < ndims; i++ ) {\n\t\t\tif ( shx[ i ] !== 1 ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tx.shape = [ shx[i] ];\n\t\tx.strides = [ sx[i] ];\n\t\tif ( x.accessorProtocol ) {\n\t\t\treturn ACCESSOR_INCLUDES[ 1 ]( x, value );\n\t\t}\n\t\tif ( isCmplx ) {\n\t\t\treturn COMPLEX_INCLUDES[ 1 ]( x, value );\n\t\t}\n\t\treturn INCLUDES[ 1 ]( x, value );\n\t}\n\tiox = iterationOrder( sx ); // +/-1\n\n\t// Determine whether we can avoid blocked iteration...\n\tif ( iox !== 0 ) {\n\t\t// Determine the minimum and maximum linear indices which are accessible by the array view:\n\t\txmmv = minmaxViewBufferIndex( shx, sx, x.offset );\n\n\t\t// Determine whether we can ignore shape (and strides) and treat the ndarray as a linear one-dimensional strided array...\n\t\tif ( len === ( xmmv[1]-xmmv[0]+1 ) || ( isCmplx && len*2 === ( xmmv[1]-xmmv[0]+2 ) ) ) { // eslint-disable-line max-len\n\t\t\t// Note: the above is equivalent to @stdlib/ndarray/base/assert/is-contiguous, but in-lined so we can retain computed values...\n\t\t\tif ( iox === 1 ) {\n\t\t\t\tox = xmmv[ 0 ];\n\t\t\t} else {\n\t\t\t\tox = xmmv[ 1 ];\n\t\t\t}\n\t\t\tx.shape = [ len ];\n\t\t\tx.strides = [ ( isCmplx ) ? iox*2 : iox ];\n\t\t\tx.offset = ox;\n\t\t\tif ( x.accessorProtocol ) {\n\t\t\t\treturn ACCESSOR_INCLUDES[ 1 ]( x, value );\n\t\t\t}\n\t\t\tif ( isCmplx ) {\n\t\t\t\treturn COMPLEX_INCLUDES[ 1 ]( x, value );\n\t\t\t}\n\t\t\treturn INCLUDES[ 1 ]( x, value );\n\t\t}\n\t\t// The ndarray is non-contiguous, so we cannot directly use one-dimensional array functionality...\n\n\t\t// Determine whether we can use simple nested loops...\n\t\tif ( ndims <= MAX_DIMS ) {\n\t\t\t// So long as iteration always moves in the same direction (i.e., no mixed sign strides), we can leverage cache-optimal (i.e., normal) nested loops without resorting to blocked iteration...\n\t\t\tif ( x.accessorProtocol ) {\n\t\t\t\treturn ACCESSOR_INCLUDES[ ndims ]( x, value );\n\t\t\t}\n\t\t\tif ( isCmplx ) {\n\t\t\t\treturn COMPLEX_INCLUDES[ ndims ]( x, value );\n\t\t\t}\n\t\t\treturn INCLUDES[ ndims ]( x, value );\n\t\t}\n\t\t// Fall-through to blocked iteration...\n\t}\n\t// At this point, we're either dealing with a non-contiguous n-dimensional array or a high dimensional n-dimensional array, so our only hope is that we can still perform blocked iteration...\n\n\t// Determine whether we can perform blocked iteration...\n\tif ( ndims <= MAX_DIMS ) {\n\t\tif ( x.accessorProtocol ) {\n\t\t\treturn BLOCKED_ACCESSOR_INCLUDES[ ndims-2 ]( x, value );\n\t\t}\n\t\tif ( isCmplx ) {\n\t\t\treturn BLOCKED_COMPLEX_INCLUDES[ ndims-2 ]( x, value );\n\t\t}\n\t\treturn BLOCKED_INCLUDES[ ndims-2 ]( x, value );\n\t}\n\t// Fall-through to linear view iteration without regard for how data is stored in memory (i.e., take the slow path)...\n\tif ( x.accessorProtocol ) {\n\t\treturn accessorincludesnd( x, value );\n\t}\n\tif ( isCmplx ) {\n\t\treturn complexincludesnd( x, value );\n\t}\n\treturn includesnd( x, value );\n}\n\n\n// EXPORTS //\n\nmodule.exports = includes;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Test whether an ndarray contains a specified value.\n*\n* @module @stdlib/ndarray-base-includes\n*\n* @example\n* var Float64Array = require( '@stdlib/array-float64' );\n* var includes = require( '@stdlib/ndarray-base-includes' );\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 3, 1, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 4, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'float64',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Create the search element ndarray-like object:\n* var searchElement = {\n* 'dtype': 'float64',\n* 'data': new Float64Array( [ 2.0 ] ),\n* 'shape': [],\n* 'strides': [ 0 ],\n* 'offset': 0,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var out = includes( [ x, searchElement ] );\n* // returns true\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n"], - "mappings": "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", - "names": ["require_d_blocked_accessors", "__commonJSMin", "exports", "module", "loopOrder", "blockSize", "blockedincludes2d", "x", "value", "bsize", "xbuf", "get", "dx0", "dx1", "ox1", "sh", "s0", "s1", "sx", "ox", "ix", "i0", "i1", "j0", "j1", "o", "require_d_blocked_accessors", "__commonJSMin", "exports", "module", "loopOrder", "blockSize", "blockedincludes3d", "x", "value", "bsize", "xbuf", "get", "dx0", "dx1", "dx2", "ox1", "ox2", "sh", "s0", "s1", "s2", "sx", "ox", "ix", "i0", "i1", "i2", "j0", "j1", "j2", "o", "require_d_blocked_accessors", "__commonJSMin", "exports", "module", "loopOrder", "blockSize", "blockedincludes4d", "x", "value", "bsize", "xbuf", "get", "dx0", "dx1", "dx2", "dx3", "ox1", "ox2", "ox3", "sh", "s0", "s1", "s2", "s3", "sx", "ox", "ix", "i0", "i1", "i2", "i3", "j0", "j1", "j2", "j3", "o", "require_d_blocked_accessors", "__commonJSMin", "exports", "module", "loopOrder", "blockSize", "blockedincludes5d", "x", "value", "bsize", "xbuf", "get", "dx0", "dx1", "dx2", "dx3", "dx4", "ox1", "ox2", "ox3", "ox4", "sh", "s0", "s1", "s2", "s3", "s4", "sx", "ox", "ix", "i0", "i1", "i2", "i3", "i4", "j0", "j1", "j2", "j3", "j4", "o", "require_d_blocked_accessors", "__commonJSMin", "exports", "module", "loopOrder", "blockSize", "blockedincludes6d", "x", "value", "bsize", "xbuf", "get", "dx0", "dx1", "dx2", "dx3", "dx4", "dx5", "ox1", "ox2", "ox3", "ox4", "ox5", "sh", "s0", "s1", "s2", "s3", "s4", "s5", "sx", "ox", "ix", "i0", "i1", "i2", "i3", "i4", "i5", "j0", "j1", "j2", "j3", "j4", "j5", "o", "require_d_blocked_accessors", "__commonJSMin", "exports", "module", "loopOrder", "blockSize", "blockedincludes7d", "x", "value", "bsize", "xbuf", "get", "dx0", "dx1", "dx2", "dx3", "dx4", "dx5", "dx6", "ox1", "ox2", "ox3", "ox4", "ox5", "ox6", "sh", "s0", "s1", "s2", "s3", "s4", "s5", "s6", "sx", "ox", "ix", "i0", "i1", "i2", "i3", "i4", "i5", "i6", "j0", "j1", "j2", "j3", "j4", "j5", "j6", "o", "require_d_blocked_accessors", "__commonJSMin", "exports", "module", "loopOrder", "blockSize", "blockedincludes8d", "x", "value", "bsize", "xbuf", "get", "dx0", "dx1", "dx2", "dx3", "dx4", "dx5", "dx6", "dx7", "ox1", "ox2", "ox3", "ox4", "ox5", "ox6", "ox7", "sh", "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", "sx", "ox", "ix", "i0", "i1", "i2", "i3", "i4", "i5", "i6", "i7", "j0", "j1", "j2", "j3", "j4", "j5", "j6", "j7", "o", "require_d_blocked_accessors", "__commonJSMin", "exports", "module", "loopOrder", "blockSize", "blockedincludes9d", "x", "value", "bsize", "xbuf", "get", "dx0", "dx1", "dx2", "dx3", "dx4", "dx5", "dx6", "dx7", "dx8", "ox1", "ox2", "ox3", "ox4", "ox5", "ox6", "ox7", "ox8", "sh", "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", "sx", "ox", "ix", "i0", "i1", "i2", "i3", "i4", "i5", "i6", "i7", "i8", "j0", "j1", "j2", "j3", "j4", "j5", "j6", "j7", "j8", "o", "require_d_blocked_accessors", "__commonJSMin", "exports", "module", "loopOrder", "blockSize", "blockedincludes10d", "x", "value", "bsize", "xbuf", "get", "dx0", "dx1", "dx2", "dx3", "dx4", "dx5", "dx6", "dx7", "dx8", "dx9", "ox1", "ox2", "ox3", "ox4", "ox5", "ox6", "ox7", "ox8", "ox9", "sh", "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", "sx", "ox", "ix", "i0", "i1", "i2", "i3", "i4", "i5", "i6", "i7", "i8", "i9", "j0", "j1", "j2", "j3", "j4", "j5", "j6", "j7", "j8", "j9", "o", "require_d_blocked_complex", "__commonJSMin", "exports", "module", "loopOrder", "blockSize", "blockedincludes2d", "x", "value", "bsize", "xbuf", "dx0", "dx1", "ox1", "sh", "s0", "s1", "sx", "ox", "ix", "i0", "i1", "j0", "j1", "o", "require_d_blocked_complex", "__commonJSMin", "exports", "module", "loopOrder", "blockSize", "blockedincludes3d", "x", "value", "bsize", "xbuf", "dx0", "dx1", "dx2", "ox1", "ox2", "sh", "s0", "s1", "s2", "sx", "ox", "ix", "i0", "i1", "i2", "j0", "j1", "j2", "require_d_blocked_complex", "__commonJSMin", "exports", "module", "loopOrder", "blockSize", "blockedincludes4d", "x", "value", "bsize", "xbuf", "dx0", "dx1", "dx2", "dx3", "ox1", "ox2", "ox3", "sh", "s0", "s1", "s2", "s3", "sx", "ox", "ix", "i0", "i1", "i2", "i3", "j0", "j1", "j2", "j3", "o", "require_d_blocked_complex", "__commonJSMin", "exports", "module", "loopOrder", "blockSize", "blockedincludes5d", "x", "value", "bsize", "xbuf", "dx0", "dx1", "dx2", "dx3", "dx4", "ox1", "ox2", "ox3", "ox4", "sh", "s0", "s1", "s2", "s3", "s4", "sx", "ox", "ix", "i0", "i1", "i2", "i3", "i4", "j0", "j1", "j2", "j3", "j4", "o", "require_d_blocked_complex", "__commonJSMin", "exports", "module", "loopOrder", "blockSize", "blockedincludes6d", "x", "value", "bsize", "xbuf", "dx0", "dx1", "dx2", "dx3", "dx4", "dx5", "ox1", "ox2", "ox3", "ox4", "ox5", "sh", "s0", "s1", "s2", "s3", "s4", "s5", "sx", "ox", "ix", "i0", "i1", "i2", "i3", "i4", "i5", "j0", "j1", "j2", "j3", "j4", "j5", "o", "require_d_blocked_complex", "__commonJSMin", "exports", "module", "loopOrder", "blockSize", "blockedincludes7d", "x", "value", "bsize", "xbuf", "dx0", "dx1", "dx2", "dx3", "dx4", "dx5", "dx6", "ox1", "ox2", "ox3", "ox4", "ox5", "ox6", "sh", "s0", "s1", "s2", "s3", "s4", "s5", "s6", "sx", "ox", "ix", "i0", "i1", "i2", "i3", "i4", "i5", "i6", "j0", "j1", "j2", "j3", "j4", "j5", "j6", "o", "require_d_blocked_complex", "__commonJSMin", "exports", "module", "loopOrder", "blockSize", "blockedincludes8d", "x", "value", "bsize", "xbuf", "dx0", "dx1", "dx2", "dx3", "dx4", "dx5", "dx6", "dx7", "ox1", "ox2", "ox3", "ox4", "ox5", "ox6", "ox7", "sh", "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", "sx", "ox", "ix", "i0", "i1", "i2", "i3", "i4", "i5", "i6", "i7", "j0", "j1", "j2", "j3", "j4", "j5", "j6", "j7", "o", "require_d_blocked_complex", "__commonJSMin", "exports", "module", "loopOrder", "blockSize", "blockedincludes9d", "x", "value", "bsize", "xbuf", "dx0", "dx1", "dx2", "dx3", "dx4", "dx5", "dx6", "dx7", "dx8", "ox1", "ox2", "ox3", "ox4", "ox5", "ox6", "ox7", "ox8", "sh", "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", "sx", "ox", "ix", "i0", "i1", "i2", "i3", "i4", "i5", "i6", "i7", "i8", "j0", "j1", "j2", "j3", "j4", "j5", "j6", "j7", "j8", "o", "require_d_blocked_complex", "__commonJSMin", "exports", "module", "loopOrder", "blockSize", "blockedincludes10d", "x", "value", "bsize", "xbuf", "dx0", "dx1", "dx2", "dx3", "dx4", "dx5", "dx6", "dx7", "dx8", "dx9", "ox1", "ox2", "ox3", "ox4", "ox5", "ox6", "ox7", "ox8", "ox9", "sh", "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", "sx", "ox", "ix", "i0", "i1", "i2", "i3", "i4", "i5", "i6", "i7", "i8", "i9", "j0", "j1", "j2", "j3", "j4", "j5", "j6", "j7", "j8", "j9", "o", "require_d_blocked", "__commonJSMin", "exports", "module", "loopOrder", "blockSize", "blockedincludes2d", "x", "value", "bsize", "xbuf", "dx0", "dx1", "ox1", "sh", "s0", "s1", "sx", "ox", "ix", "i0", "i1", "j0", "j1", "o", "require_d_blocked", "__commonJSMin", "exports", "module", "loopOrder", "blockSize", "blockedincludes3d", "x", "value", "bsize", "xbuf", "dx0", "dx1", "dx2", "ox1", "ox2", "sh", "s0", "s1", "s2", "sx", "ox", "ix", "i0", "i1", "i2", "j0", "j1", "j2", "require_d_blocked", "__commonJSMin", "exports", "module", "loopOrder", "blockSize", "blockedincludes4d", "x", "value", "bsize", "xbuf", "dx0", "dx1", "dx2", "dx3", "ox1", "ox2", "ox3", "sh", "s0", "s1", "s2", "s3", "sx", "ox", "ix", "i0", "i1", "i2", "i3", "j0", "j1", "j2", "j3", "o", "require_d_blocked", "__commonJSMin", "exports", "module", "loopOrder", "blockSize", "blockedincludes5d", "x", "value", "bsize", "xbuf", "dx0", "dx1", "dx2", "dx3", "dx4", "ox1", "ox2", "ox3", "ox4", "sh", "s0", "s1", "s2", "s3", "s4", "sx", "ox", "ix", "i0", "i1", "i2", "i3", "i4", "j0", "j1", "j2", "j3", "j4", "o", "require_d_blocked", "__commonJSMin", "exports", "module", "loopOrder", "blockSize", "blockedincludes6d", "x", "value", "bsize", "xbuf", "dx0", "dx1", "dx2", "dx3", "dx4", "dx5", "ox1", "ox2", "ox3", "ox4", "ox5", "sh", "s0", "s1", "s2", "s3", "s4", "s5", "sx", "ox", "ix", "i0", "i1", "i2", "i3", "i4", "i5", "j0", "j1", "j2", "j3", "j4", "j5", "o", "require_d_blocked", "__commonJSMin", "exports", "module", "loopOrder", "blockSize", "blockedincludes7d", "x", "value", "bsize", "xbuf", "dx0", "dx1", "dx2", "dx3", "dx4", "dx5", "dx6", "ox1", "ox2", "ox3", "ox4", "ox5", "ox6", "sh", "s0", "s1", "s2", "s3", "s4", "s5", "s6", "sx", "ox", "ix", "i0", "i1", "i2", "i3", "i4", "i5", "i6", "j0", "j1", "j2", "j3", "j4", "j5", "j6", "o", "require_d_blocked", "__commonJSMin", "exports", "module", "loopOrder", "blockSize", "blockedincludes8d", "x", "value", "bsize", "xbuf", "dx0", "dx1", "dx2", "dx3", "dx4", "dx5", "dx6", "dx7", "ox1", "ox2", "ox3", "ox4", "ox5", "ox6", "ox7", "sh", "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", "sx", "ox", "ix", "i0", "i1", "i2", "i3", "i4", "i5", "i6", "i7", "j0", "j1", "j2", "j3", "j4", "j5", "j6", "j7", "o", "require_d_blocked", "__commonJSMin", "exports", "module", "loopOrder", "blockSize", "blockedincludes9d", "x", "value", "bsize", "xbuf", "dx0", "dx1", "dx2", "dx3", "dx4", "dx5", "dx6", "dx7", "dx8", "ox1", "ox2", "ox3", "ox4", "ox5", "ox6", "ox7", "ox8", "sh", "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", "sx", "ox", "ix", "i0", "i1", "i2", "i3", "i4", "i5", "i6", "i7", "i8", "j0", "j1", "j2", "j3", "j4", "j5", "j6", "j7", "j8", "o", "require_d_blocked", "__commonJSMin", "exports", "module", "loopOrder", "blockSize", "blockedincludes10d", "x", "value", "bsize", "xbuf", "dx0", "dx1", "dx2", "dx3", "dx4", "dx5", "dx6", "dx7", "dx8", "dx9", "ox1", "ox2", "ox3", "ox4", "ox5", "ox6", "ox7", "ox8", "ox9", "sh", "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", "sx", "ox", "ix", "i0", "i1", "i2", "i3", "i4", "i5", "i6", "i7", "i8", "i9", "j0", "j1", "j2", "j3", "j4", "j5", "j6", "j7", "j8", "j9", "o", "require_d_accessors", "__commonJSMin", "exports", "module", "includes0d", "x", "value", "require_d_accessors", "__commonJSMin", "exports", "module", "includes1d", "x", "value", "xbuf", "get", "dx0", "S0", "ix", "i0", "require_d_accessors", "__commonJSMin", "exports", "module", "strides2order", "includes2d", "x", "value", "xbuf", "get", "dx0", "dx1", "sh", "S0", "S1", "sx", "ix", "i0", "i1", "require_d_accessors", "__commonJSMin", "exports", "module", "strides2order", "includes3d", "x", "value", "xbuf", "get", "dx0", "dx1", "dx2", "sh", "S0", "S1", "S2", "sx", "ix", "i0", "i1", "i2", "require_d_accessors", "__commonJSMin", "exports", "module", "strides2order", "includes4d", "x", "value", "xbuf", "get", "dx0", "dx1", "dx2", "dx3", "sh", "S0", "S1", "S2", "S3", "sx", "ix", "i0", "i1", "i2", "i3", "require_d_accessors", "__commonJSMin", "exports", "module", "strides2order", "includes5d", "x", "value", "xbuf", "get", "dx0", "dx1", "dx2", "dx3", "dx4", "sh", "S0", "S1", "S2", "S3", "S4", "sx", "ix", "i0", "i1", "i2", "i3", "i4", "require_d_accessors", "__commonJSMin", "exports", "module", "strides2order", "includes6d", "x", "value", "xbuf", "get", "dx0", "dx1", "dx2", "dx3", "dx4", "dx5", "sh", "S0", "S1", "S2", "S3", "S4", "S5", "sx", "ix", "i0", "i1", "i2", "i3", "i4", "i5", "require_d_accessors", "__commonJSMin", "exports", "module", "strides2order", "includes7d", "x", "value", "xbuf", "get", "dx0", "dx1", "dx2", "dx3", "dx4", "dx5", "dx6", "sh", "S0", "S1", "S2", "S3", "S4", "S5", "S6", "sx", "ix", "i0", "i1", "i2", "i3", "i4", "i5", "i6", "require_d_accessors", "__commonJSMin", "exports", "module", "strides2order", "includes8d", "x", "value", "xbuf", "get", "dx0", "dx1", "dx2", "dx3", "dx4", "dx5", "dx6", "dx7", "sh", "S0", "S1", "S2", "S3", "S4", "S5", "S6", "S7", "sx", "ix", "i0", "i1", "i2", "i3", "i4", "i5", "i6", "i7", "require_d_accessors", "__commonJSMin", "exports", "module", "strides2order", "includes9d", "x", "value", "xbuf", "get", "dx0", "dx1", "dx2", "dx3", "dx4", "dx5", "dx6", "dx7", "dx8", "sh", "S0", "S1", "S2", "S3", "S4", "S5", "S6", "S7", "S8", "sx", "ix", "i0", "i1", "i2", "i3", "i4", "i5", "i6", "i7", "i8", "require_d_accessors", "__commonJSMin", "exports", "module", "strides2order", "includes10d", "x", "value", "xbuf", "get", "dx0", "dx1", "dx2", "dx3", "dx4", "dx5", "dx6", "dx7", "dx8", "dx9", "sh", "S0", "S1", "S2", "S3", "S4", "S5", "S6", "S7", "S8", "S9", "sx", "ix", "i0", "i1", "i2", "i3", "i4", "i5", "i6", "i7", "i8", "i9", "require_nd_accessors", "__commonJSMin", "exports", "module", "numel", "vind2bind", "MODE", "includesnd", "x", "value", "xbuf", "ordx", "len", "get", "sh", "sx", "ox", "ix", "i", "require_d_complex", "__commonJSMin", "exports", "module", "includes0d", "x", "value", "require_d_complex", "__commonJSMin", "exports", "module", "includes1d", "x", "value", "xbuf", "dx0", "S0", "ix", "i0", "require_d_complex", "__commonJSMin", "exports", "module", "strides2order", "includes2d", "x", "value", "xbuf", "dx0", "dx1", "sh", "S0", "S1", "sx", "ix", "i0", "i1", "require_d_complex", "__commonJSMin", "exports", "module", "strides2order", "includes3d", "x", "value", "xbuf", "dx0", "dx1", "dx2", "sh", "S0", "S1", "S2", "sx", "ix", "i0", "i1", "i2", "require_d_complex", "__commonJSMin", "exports", "module", "strides2order", "includes4d", "x", "value", "xbuf", "dx0", "dx1", "dx2", "dx3", "sh", "S0", "S1", "S2", "S3", "sx", "ix", "i0", "i1", "i2", "i3", "require_d_complex", "__commonJSMin", "exports", "module", "strides2order", "includes5d", "x", "value", "xbuf", "dx0", "dx1", "dx2", "dx3", "dx4", "sh", "S0", "S1", "S2", "S3", "S4", "sx", "ix", "i0", "i1", "i2", "i3", "i4", "require_d_complex", "__commonJSMin", "exports", "module", "strides2order", "includes6d", "x", "value", "xbuf", "dx0", "dx1", "dx2", "dx3", "dx4", "dx5", "sh", "S0", "S1", "S2", "S3", "S4", "S5", "sx", "ix", "i0", "i1", "i2", "i3", "i4", "i5", "require_d_complex", "__commonJSMin", "exports", "module", "strides2order", "includes7d", "x", "value", "xbuf", "dx0", "dx1", "dx2", "dx3", "dx4", "dx5", "dx6", "sh", "S0", "S1", "S2", "S3", "S4", "S5", "S6", "sx", "ix", "i0", "i1", "i2", "i3", "i4", "i5", "i6", "require_d_complex", "__commonJSMin", "exports", "module", "strides2order", "includes8d", "x", "value", "xbuf", "dx0", "dx1", "dx2", "dx3", "dx4", "dx5", "dx6", "dx7", "sh", "S0", "S1", "S2", "S3", "S4", "S5", "S6", "S7", "sx", "ix", "i0", "i1", "i2", "i3", "i4", "i5", "i6", "i7", "require_d_complex", "__commonJSMin", "exports", "module", "strides2order", "includes9d", "x", "value", "xbuf", "dx0", "dx1", "dx2", "dx3", "dx4", "dx5", "dx6", "dx7", "dx8", "sh", "S0", "S1", "S2", "S3", "S4", "S5", "S6", "S7", "S8", "sx", "ix", "i0", "i1", "i2", "i3", "i4", "i5", "i6", "i7", "i8", "require_d_complex", "__commonJSMin", "exports", "module", "strides2order", "includes10d", "x", "value", "xbuf", "dx0", "dx1", "dx2", "dx3", "dx4", "dx5", "dx6", "dx7", "dx8", "dx9", "sh", "S0", "S1", "S2", "S3", "S4", "S5", "S6", "S7", "S8", "S9", "sx", "ix", "i0", "i1", "i2", "i3", "i4", "i5", "i6", "i7", "i8", "i9", "require_nd_complex", "__commonJSMin", "exports", "module", "numel", "vind2bind", "MODE", "includesnd", "x", "value", "xbuf", "ordx", "len", "sh", "sx", "ox", "ix", "i", "require_d", "__commonJSMin", "exports", "module", "includes0d", "x", "value", "require_d", "__commonJSMin", "exports", "module", "includes1d", "x", "value", "xbuf", "dx0", "S0", "ix", "i0", "require_d", "__commonJSMin", "exports", "module", "strides2order", "includes2d", "x", "value", "xbuf", "dx0", "dx1", "sh", "S0", "S1", "sx", "ix", "i0", "i1", "require_d", "__commonJSMin", "exports", "module", "strides2order", "includes3d", "x", "value", "xbuf", "dx0", "dx1", "dx2", "sh", "S0", "S1", "S2", "sx", "ix", "i0", "i1", "i2", "require_d", "__commonJSMin", "exports", "module", "strides2order", "includes4d", "x", "value", "xbuf", "dx0", "dx1", "dx2", "dx3", "sh", "S0", "S1", "S2", "S3", "sx", "ix", "i0", "i1", "i2", "i3", "require_d", "__commonJSMin", "exports", "module", "strides2order", "includes5d", "x", "value", "xbuf", "dx0", "dx1", "dx2", "dx3", "dx4", "sh", "S0", "S1", "S2", "S3", "S4", "sx", "ix", "i0", "i1", "i2", "i3", "i4", "require_d", "__commonJSMin", "exports", "module", "strides2order", "includes6d", "x", "value", "xbuf", "dx0", "dx1", "dx2", "dx3", "dx4", "dx5", "sh", "S0", "S1", "S2", "S3", "S4", "S5", "sx", "ix", "i0", "i1", "i2", "i3", "i4", "i5", "require_d", "__commonJSMin", "exports", "module", "strides2order", "includes7d", "x", "value", "xbuf", "dx0", "dx1", "dx2", "dx3", "dx4", "dx5", "dx6", "sh", "S0", "S1", "S2", "S3", "S4", "S5", "S6", "sx", "ix", "i0", "i1", "i2", "i3", "i4", "i5", "i6", "require_d", "__commonJSMin", "exports", "module", "strides2order", "includes8d", "x", "value", "xbuf", "dx0", "dx1", "dx2", "dx3", "dx4", "dx5", "dx6", "dx7", "sh", "S0", "S1", "S2", "S3", "S4", "S5", "S6", "S7", "sx", "ix", "i0", "i1", "i2", "i3", "i4", "i5", "i6", "i7", "require_d", "__commonJSMin", "exports", "module", "strides2order", "includes9d", "x", "value", "xbuf", "dx0", "dx1", "dx2", "dx3", "dx4", "dx5", "dx6", "dx7", "dx8", "sh", "S0", "S1", "S2", "S3", "S4", "S5", "S6", "S7", "S8", "sx", "ix", "i0", "i1", "i2", "i3", "i4", "i5", "i6", "i7", "i8", "require_d", "__commonJSMin", "exports", "module", "strides2order", "includes10d", "x", "value", "xbuf", "dx0", "dx1", "dx2", "dx3", "dx4", "dx5", "dx6", "dx7", "dx8", "dx9", "sh", "S0", "S1", "S2", "S3", "S4", "S5", "S6", "S7", "S8", "S9", "sx", "ix", "i0", "i1", "i2", "i3", "i4", "i5", "i6", "i7", "i8", "i9", "require_nd", "__commonJSMin", "exports", "module", "numel", "vind2bind", "MODE", "includesnd", "x", "value", "xbuf", "ordx", "len", "sh", "sx", "ox", "ix", "i", "require_main", "__commonJSMin", "exports", "module", "isComplexArray", "isBooleanArray", "isBoolean", "isComplexLike", "iterationOrder", "minmaxViewBufferIndex", "ndarray2object", "reinterpretComplex", "reinterpretBoolean", "real", "imag", "gscal", "blockedaccessorincludes2d", "blockedaccessorincludes3d", "blockedaccessorincludes4d", "blockedaccessorincludes5d", "blockedaccessorincludes6d", "blockedaccessorincludes7d", "blockedaccessorincludes8d", "blockedaccessorincludes9d", "blockedaccessorincludes10d", "blockedcomplexincludes2d", "blockedcomplexincludes3d", "blockedcomplexincludes4d", "blockedcomplexincludes5d", "blockedcomplexincludes6d", "blockedcomplexincludes7d", "blockedcomplexincludes8d", "blockedcomplexincludes9d", "blockedcomplexincludes10d", "blockedincludes2d", "blockedincludes3d", "blockedincludes4d", "blockedincludes5d", "blockedincludes6d", "blockedincludes7d", "blockedincludes8d", "blockedincludes9d", "blockedincludes10d", "accessorincludes0d", "accessorincludes1d", "accessorincludes2d", "accessorincludes3d", "accessorincludes4d", "accessorincludes5d", "accessorincludes6d", "accessorincludes7d", "accessorincludes8d", "accessorincludes9d", "accessorincludes10d", "accessorincludesnd", "complexincludes0d", "complexincludes1d", "complexincludes2d", "complexincludes3d", "complexincludes4d", "complexincludes5d", "complexincludes6d", "complexincludes7d", "complexincludes8d", "complexincludes9d", "complexincludes10d", "complexincludesnd", "includes0d", "includes1d", "includes2d", "includes3d", "includes4d", "includes5d", "includes6d", "includes7d", "includes8d", "includes9d", "includes10d", "includesnd", "INCLUDES", "ACCESSOR_INCLUDES", "COMPLEX_INCLUDES", "BLOCKED_INCLUDES", "BLOCKED_ACCESSOR_INCLUDES", "BLOCKED_COMPLEX_INCLUDES", "MAX_DIMS", "includes", "arrays", "isCmplx", "value", "ndims", "xmmv", "shx", "iox", "len", "sx", "ox", "ns", "x", "d", "i", "main"] -} diff --git a/docs/repl.txt b/docs/repl.txt deleted file mode 100644 index 918bb3a..0000000 --- a/docs/repl.txt +++ /dev/null @@ -1,41 +0,0 @@ - -{{alias}}( arrays ) - Tests whether an ndarray contains a specified value. - - A provided "ndarray" should be an object with the following properties: - - - dtype: data type. - - data: data buffer. - - shape: dimensions. - - strides: stride lengths. - - offset: index offset. - - order: specifies whether an ndarray is row-major (C-style) or column-major - (Fortran-style). - - Parameters - ---------- - arrays: ArrayLikeObject - Array-like object containing an input ndarray and a zero-dimensional - array containing the search element. - - Returns - ------- - out: boolean - Boolean indicating whether an ndarray contains a specified value. - - Examples - -------- - > var xbuf = new {{alias:@stdlib/array/float64}}( [ 1.0, 2.0, 3.0, 4.0 ] ); - > var dt = 'float64'; - > var sh = [ 2, 2 ]; - > var sx = [ 2, 1 ]; - > var ox = 0; - > var ord = 'row-major'; - > var v = {{alias:@stdlib/ndarray/from-scalar}}( 3.0, { 'dtype': dt } ); - > var x = {{alias:@stdlib/ndarray/ctor}}( dt, xbuf, sh, sx, ox, ord ); - > {{alias}}( [ x, v ] ) - true - - See Also - -------- - diff --git a/docs/types/test.ts b/docs/types/test.ts deleted file mode 100644 index c9c302f..0000000 --- a/docs/types/test.ts +++ /dev/null @@ -1,58 +0,0 @@ -/* -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -/// - -import zeros = require( '@stdlib/ndarray-zeros' ); -import includes = require( './index' ); - - -// TESTS // - -// The function returns a boolean... -{ - const x = zeros( [ 2, 2 ] ); - const v = zeros( [] ); - - const arrays = [ x, v ]; - - includes( arrays ); // $ExpectType boolean -} - -// The compiler throws an error if the function is provided a first argument which is not an array-like object containing ndarray-like objects... -{ - includes( 5 ); // $ExpectError - includes( true ); // $ExpectError - includes( false ); // $ExpectError - includes( null ); // $ExpectError - includes( undefined ); // $ExpectError - includes( {} ); // $ExpectError - includes( [ 1 ] ); // $ExpectError - includes( ( x: number ): number => x ); // $ExpectError -} - -// The compiler throws an error if the function is provided an unsupported number of arguments... -{ - const x = zeros( [ 2, 2 ] ); - const v = zeros( [] ); - - const arrays = [ x, v ]; - - includes(); // $ExpectError - includes( arrays, 10 ); // $ExpectError -} diff --git a/examples/index.js b/examples/index.js deleted file mode 100644 index 7508cb4..0000000 --- a/examples/index.js +++ /dev/null @@ -1,48 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var ndarray2array = require( '@stdlib/ndarray-base-to-array' ); -var includes = require( './../lib' ); - -var x = { - 'dtype': 'generic', - 'data': discreteUniform( 10, 0, 10, { - 'dtype': 'generic' - }), - 'shape': [ 5, 2 ], - 'strides': [ 2, 1 ], - 'offset': 0, - 'order': 'row-major' -}; -console.log( ndarray2array( x.data, x.shape, x.strides, x.offset, x.order ) ); - -var v = { - 'dtype': x.dtype, - 'data': [ 1 ], - 'shape': [], - 'strides': [ 0 ], - 'offset': 0, - 'order': x.order -}; -console.log( 'Search element: %d', v.data[ 0 ] ); - -var out = includes( [ x, v ] ); -console.log( out ); diff --git a/docs/types/index.d.ts b/index.d.ts similarity index 95% rename from docs/types/index.d.ts rename to index.d.ts index a6c2d3e..7fad385 100644 --- a/docs/types/index.d.ts +++ b/index.d.ts @@ -18,7 +18,7 @@ // TypeScript Version: 4.1 -/// +/// import { ArrayLike } from '@stdlib/types/array'; import { ndarray } from '@stdlib/types/ndarray'; diff --git a/index.mjs b/index.mjs new file mode 100644 index 0000000..3e9f594 --- /dev/null +++ b/index.mjs @@ -0,0 +1,4 @@ +// Copyright (c) 2026 The Stdlib Authors. License is Apache-2.0: http://www.apache.org/licenses/LICENSE-2.0 +/// +import r from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-complex-typed-array@v0.1.3-esm/index.mjs";import f from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-booleanarray@v0.0.3-esm/index.mjs";import{isPrimitive as o}from"https://cdn.jsdelivr.net/gh/stdlib-js/assert-is-boolean@v0.2.3-esm/index.mjs";import t from"https://cdn.jsdelivr.net/gh/stdlib-js/assert-is-complex-like@v0.2.4-esm/index.mjs";import s from"https://cdn.jsdelivr.net/gh/stdlib-js/ndarray-base-iteration-order@v0.2.3-esm/index.mjs";import e from"https://cdn.jsdelivr.net/gh/stdlib-js/ndarray-base-minmax-view-buffer-index@v0.2.3-esm/index.mjs";import a from"https://cdn.jsdelivr.net/gh/stdlib-js/ndarray-base-ndarraylike2object@v0.2.3-esm/index.mjs";import n from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-complex@v0.1.3-esm/index.mjs";import i from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-boolean@v0.0.3-esm/index.mjs";import d from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-real@v0.1.2-esm/index.mjs";import u from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-imag@v0.1.2-esm/index.mjs";import c from"https://cdn.jsdelivr.net/gh/stdlib-js/blas-base-gscal@v0.3.1-esm/index.mjs";import p from"https://cdn.jsdelivr.net/gh/stdlib-js/ndarray-base-nullary-loop-interchange-order@v0.2.3-esm/index.mjs";import h from"https://cdn.jsdelivr.net/gh/stdlib-js/ndarray-base-nullary-tiling-block-size@v0.2.3-esm/index.mjs";import m from"https://cdn.jsdelivr.net/gh/stdlib-js/ndarray-base-nullary-loop-interchange-order@esm/index.mjs";import v from"https://cdn.jsdelivr.net/gh/stdlib-js/ndarray-base-nullary-tiling-block-size@esm/index.mjs";import l from"https://cdn.jsdelivr.net/gh/stdlib-js/ndarray-base-strides2order@esm/index.mjs";import j from"https://cdn.jsdelivr.net/gh/stdlib-js/ndarray-base-strides2order@v0.2.3-esm/index.mjs";import x from"https://cdn.jsdelivr.net/gh/stdlib-js/ndarray-base-numel@esm/index.mjs";import y from"https://cdn.jsdelivr.net/gh/stdlib-js/ndarray-base-vind2bind@esm/index.mjs";var b="throw";var g="throw";var P="throw";var k=[function(r,f){return r.data[r.offset]===f},function(r,f){var o,t,s,e,a;for(s=r.shape[0],t=r.strides[0],e=r.offset,o=r.data,a=0;a0;)for(x0;)for(j0;)for(k0;)for(P0;)for(g0;)for(B0;)for(A0;)for(q0;)for(z0;)for(G0;)for(F0;)for(E0;)for(D0;)for(C0;)for(L0;)for(K0;)for(J0;)for(I0;)for(H0;)for(G0;)for(R0;)for(Q0;)for(O0;)for(N0;)for(M0;)for(L0;)for(K0;)for(W0;)for(V0;)for(U0;)for(T0;)for(S0;)for(R0;)for(Q0;)for(O0;)for(_0;)for($0;)for(Z0;)for(Y0;)for(X0;)for(W0;)for(V0;)for(U0;)for(T0;)for(sr0;)for(tr0;)for(or0;)for(fr0;)for(rr0;)for(_0;)for($0;)for(Z0;)for(Y0;)for(X0;)for(y0;)for(x0;)for(w0;)for(k0;)for(P0;)for(C0;)for(B0;)for(A0;)for(q0;)for(H0;)for(G0;)for(F0;)for(E0;)for(D0;)for(M0;)for(L0;)for(K0;)for(J0;)for(I0;)for(H0;)for(S0;)for(R0;)for(Q0;)for(O0;)for(N0;)for(M0;)for(L0;)for(X0;)for(W0;)for(V0;)for(U0;)for(T0;)for(S0;)for(R0;)for(Q0;)for(rr0;)for(_0;)for($0;)for(Z0;)for(Y0;)for(X0;)for(W0;)for(V0;)for(U0;)for(er0;)for(sr0;)for(tr0;)for(or0;)for(fr0;)for(rr0;)for(_0;)for($0;)for(Z0;)for(Y0;)for(x0;)for(j0;)for(k0;)for(P0;)for(g0;)for(B0;)for(A0;)for(q0;)for(z0;)for(G0;)for(F0;)for(E0;)for(D0;)for(C0;)for(L0;)for(K0;)for(J0;)for(I0;)for(H0;)for(G0;)for(R0;)for(Q0;)for(O0;)for(N0;)for(M0;)for(L0;)for(K0;)for(W0;)for(V0;)for(U0;)for(T0;)for(S0;)for(R0;)for(Q0;)for(O0;)for(_0;)for($0;)for(Z0;)for(Y0;)for(X0;)for(W0;)for(V0;)for(U0;)for(T0;)for(sr0;)for(tr0;)for(or0;)for(fr0;)for(rr0;)for(_0;)for($0;)for(Z0;)for(Y0;)for(X} x.accessors - data buffer accessors\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* import toAccessorArray from '@stdlib/array-base-to-accessor-array';\n* import accessors from '@stdlib/array-base-accessors';\n*\n* // Create a data buffer:\n* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'generic',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major',\n* 'accessors': accessors( xbuf ).accessors\n* };\n*\n* // Perform reduction:\n* var out = includesnd( x, 6.0 );\n* // returns true\n*\n* out = includesnd( x, 100.0 );\n* // returns false\n*/\nfunction includesnd( x, value ) {\n\tvar xbuf;\n\tvar ordx;\n\tvar len;\n\tvar get;\n\tvar sh;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i;\n\n\tsh = x.shape;\n\n\t// Compute the total number of elements over which to iterate:\n\tlen = numel( sh );\n\n\t// Cache a reference to the output ndarray data buffer:\n\txbuf = x.data;\n\n\t// Cache a reference to the stride array:\n\tsx = x.strides;\n\n\t// Cache the index of the first indexed element:\n\tox = x.offset;\n\n\t// Cache the array order:\n\tordx = x.order;\n\n\t// Cache accessor:\n\tget = x.accessors[ 0 ];\n\n\t// Iterate over each element based on the linear **view** index, regardless as to how the data is stored in memory...\n\tfor ( i = 0; i < len; i++ ) {\n\t\tix = vind2bind( sh, sx, ox, ordx, i, MODE );\n\t\tif ( get( xbuf, ix ) === value ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default includesnd;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nimport numel from '@stdlib/ndarray-base-numel';\nimport vind2bind from '@stdlib/ndarray-base-vind2bind';\n\n\n// VARIABLES //\n\nvar MODE = 'throw';\n\n\n// MAIN //\n\n/**\n* Tests whether a reinterpreted complex number ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {ComplexLike} value - search element\n* @returns {boolean} result\n*\n* @example\n* import Float64Array from '@stdlib/array-float64';\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 4, 2 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'complex128',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var v = {\n* 're': 3.0,\n* 'im': 4.0\n* };\n* var out = includesnd( x, v );\n* // returns true\n*\n* v = {\n* 're': -3.0,\n* 'im': -4.0\n* };\n* out = includesnd( x, v );\n* // returns false\n*/\nfunction includesnd( x, value ) {\n\tvar xbuf;\n\tvar ordx;\n\tvar len;\n\tvar sh;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i;\n\n\tsh = x.shape;\n\n\t// Compute the total number of elements over which to iterate:\n\tlen = numel( sh );\n\n\t// Cache a reference to the output ndarray data buffer:\n\txbuf = x.data;\n\n\t// Cache a reference to the stride array:\n\tsx = x.strides;\n\n\t// Cache the index of the first indexed element:\n\tox = x.offset;\n\n\t// Cache the array order:\n\tordx = x.order;\n\n\t// Iterate over each element based on the linear **view** index, regardless as to how the data is stored in memory...\n\tfor ( i = 0; i < len; i++ ) {\n\t\tix = vind2bind( sh, sx, ox, ordx, i, MODE );\n\t\tif ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default includesnd;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nimport numel from '@stdlib/ndarray-base-numel';\nimport vind2bind from '@stdlib/ndarray-base-vind2bind';\n\n\n// VARIABLES //\n\nvar MODE = 'throw';\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* import Float64Array from '@stdlib/array-float64';\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'float64',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var out = includesnd( x, 6.0 );\n* // returns true\n*\n* out = includesnd( x, 100.0 );\n* // returns false\n*/\nfunction includesnd( x, value ) {\n\tvar xbuf;\n\tvar ordx;\n\tvar len;\n\tvar sh;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i;\n\n\tsh = x.shape;\n\n\t// Compute the total number of elements over which to iterate:\n\tlen = numel( sh );\n\n\t// Cache a reference to the output ndarray data buffer:\n\txbuf = x.data;\n\n\t// Cache a reference to the stride array:\n\tsx = x.strides;\n\n\t// Cache the index of the first indexed element:\n\tox = x.offset;\n\n\t// Cache the array order:\n\tordx = x.order;\n\n\t// Iterate over each element based on the linear **view** index, regardless as to how the data is stored in memory...\n\tfor ( i = 0; i < len; i++ ) {\n\t\tix = vind2bind( sh, sx, ox, ordx, i, MODE );\n\t\tif ( xbuf[ ix ] === value ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default includesnd;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nimport isComplexArray from '@stdlib/array-base-assert-is-complex-typed-array';\nimport isBooleanArray from '@stdlib/array-base-assert-is-booleanarray';\nimport { isPrimitive as isBoolean } from '@stdlib/assert-is-boolean';\nimport isComplexLike from '@stdlib/assert-is-complex-like';\nimport iterationOrder from '@stdlib/ndarray-base-iteration-order';\nimport minmaxViewBufferIndex from '@stdlib/ndarray-base-minmax-view-buffer-index';\nimport ndarray2object from '@stdlib/ndarray-base-ndarraylike2object';\nimport reinterpretComplex from '@stdlib/strided-base-reinterpret-complex';\nimport reinterpretBoolean from '@stdlib/strided-base-reinterpret-boolean';\nimport real from '@stdlib/complex-float64-real';\nimport imag from '@stdlib/complex-float64-imag';\nimport gscal from '@stdlib/blas-base-gscal';\nimport blockedaccessorincludes2d from './2d_blocked_accessors.js';\nimport blockedaccessorincludes3d from './3d_blocked_accessors.js';\nimport blockedaccessorincludes4d from './4d_blocked_accessors.js';\nimport blockedaccessorincludes5d from './5d_blocked_accessors.js';\nimport blockedaccessorincludes6d from './6d_blocked_accessors.js';\nimport blockedaccessorincludes7d from './7d_blocked_accessors.js';\nimport blockedaccessorincludes8d from './8d_blocked_accessors.js';\nimport blockedaccessorincludes9d from './9d_blocked_accessors.js';\nimport blockedaccessorincludes10d from './10d_blocked_accessors.js'; // eslint-disable-line id-length\nimport blockedcomplexincludes2d from './2d_blocked_complex.js';\nimport blockedcomplexincludes3d from './3d_blocked_complex.js';\nimport blockedcomplexincludes4d from './4d_blocked_complex.js';\nimport blockedcomplexincludes5d from './5d_blocked_complex.js';\nimport blockedcomplexincludes6d from './6d_blocked_complex.js';\nimport blockedcomplexincludes7d from './7d_blocked_complex.js';\nimport blockedcomplexincludes8d from './8d_blocked_complex.js';\nimport blockedcomplexincludes9d from './9d_blocked_complex.js';\nimport blockedcomplexincludes10d from './10d_blocked_complex.js';\nimport blockedincludes2d from './2d_blocked.js';\nimport blockedincludes3d from './3d_blocked.js';\nimport blockedincludes4d from './4d_blocked.js';\nimport blockedincludes5d from './5d_blocked.js';\nimport blockedincludes6d from './6d_blocked.js';\nimport blockedincludes7d from './7d_blocked.js';\nimport blockedincludes8d from './8d_blocked.js';\nimport blockedincludes9d from './9d_blocked.js';\nimport blockedincludes10d from './10d_blocked.js';\nimport accessorincludes0d from './0d_accessors.js';\nimport accessorincludes1d from './1d_accessors.js';\nimport accessorincludes2d from './2d_accessors.js';\nimport accessorincludes3d from './3d_accessors.js';\nimport accessorincludes4d from './4d_accessors.js';\nimport accessorincludes5d from './5d_accessors.js';\nimport accessorincludes6d from './6d_accessors.js';\nimport accessorincludes7d from './7d_accessors.js';\nimport accessorincludes8d from './8d_accessors.js';\nimport accessorincludes9d from './9d_accessors.js';\nimport accessorincludes10d from './10d_accessors.js';\nimport accessorincludesnd from './nd_accessors.js';\nimport complexincludes0d from './0d_complex.js';\nimport complexincludes1d from './1d_complex.js';\nimport complexincludes2d from './2d_complex.js';\nimport complexincludes3d from './3d_complex.js';\nimport complexincludes4d from './4d_complex.js';\nimport complexincludes5d from './5d_complex.js';\nimport complexincludes6d from './6d_complex.js';\nimport complexincludes7d from './7d_complex.js';\nimport complexincludes8d from './8d_complex.js';\nimport complexincludes9d from './9d_complex.js';\nimport complexincludes10d from './10d_complex.js';\nimport complexincludesnd from './nd_complex.js';\nimport includes0d from './0d.js';\nimport includes1d from './1d.js';\nimport includes2d from './2d.js';\nimport includes3d from './3d.js';\nimport includes4d from './4d.js';\nimport includes5d from './5d.js';\nimport includes6d from './6d.js';\nimport includes7d from './7d.js';\nimport includes8d from './8d.js';\nimport includes9d from './9d.js';\nimport includes10d from './10d.js';\nimport includesnd from './nd.js';\n\n\n// VARIABLES //\n\nvar INCLUDES = [\n\tincludes0d,\n\tincludes1d,\n\tincludes2d,\n\tincludes3d,\n\tincludes4d,\n\tincludes5d,\n\tincludes6d,\n\tincludes7d,\n\tincludes8d,\n\tincludes9d,\n\tincludes10d\n];\nvar ACCESSOR_INCLUDES = [\n\taccessorincludes0d,\n\taccessorincludes1d,\n\taccessorincludes2d,\n\taccessorincludes3d,\n\taccessorincludes4d,\n\taccessorincludes5d,\n\taccessorincludes6d,\n\taccessorincludes7d,\n\taccessorincludes8d,\n\taccessorincludes9d,\n\taccessorincludes10d\n];\nvar COMPLEX_INCLUDES = [\n\tcomplexincludes0d,\n\tcomplexincludes1d,\n\tcomplexincludes2d,\n\tcomplexincludes3d,\n\tcomplexincludes4d,\n\tcomplexincludes5d,\n\tcomplexincludes6d,\n\tcomplexincludes7d,\n\tcomplexincludes8d,\n\tcomplexincludes9d,\n\tcomplexincludes10d\n];\nvar BLOCKED_INCLUDES = [\n\tblockedincludes2d, // 0\n\tblockedincludes3d,\n\tblockedincludes4d,\n\tblockedincludes5d,\n\tblockedincludes6d,\n\tblockedincludes7d,\n\tblockedincludes8d,\n\tblockedincludes9d,\n\tblockedincludes10d // 8\n];\nvar BLOCKED_ACCESSOR_INCLUDES = [\n\tblockedaccessorincludes2d, // 0\n\tblockedaccessorincludes3d,\n\tblockedaccessorincludes4d,\n\tblockedaccessorincludes5d,\n\tblockedaccessorincludes6d,\n\tblockedaccessorincludes7d,\n\tblockedaccessorincludes8d,\n\tblockedaccessorincludes9d,\n\tblockedaccessorincludes10d // 8\n];\nvar BLOCKED_COMPLEX_INCLUDES = [\n\tblockedcomplexincludes2d, // 0\n\tblockedcomplexincludes3d,\n\tblockedcomplexincludes4d,\n\tblockedcomplexincludes5d,\n\tblockedcomplexincludes6d,\n\tblockedcomplexincludes7d,\n\tblockedcomplexincludes8d,\n\tblockedcomplexincludes9d,\n\tblockedcomplexincludes10d // 8\n];\nvar MAX_DIMS = INCLUDES.length - 1;\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value.\n*\n* ## Notes\n*\n* - A provided ndarray should be an object with the following properties:\n*\n* - **dtype**: data type.\n* - **data**: data buffer.\n* - **shape**: dimensions.\n* - **strides**: stride lengths.\n* - **offset**: index offset.\n* - **order**: specifies whether an ndarray is row-major (C-style) or column major (Fortran-style).\n*\n* @param {ArrayLikeObject} arrays - array-like object containing one input array and a zero-dimensional search element array\n* @returns {boolean} result\n*\n* @example\n* import Float64Array from '@stdlib/array-float64';\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 3, 1, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 4, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'float64',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Create the search element ndarray-like object:\n* var searchElement = {\n* 'dtype': 'float64',\n* 'data': new Float64Array( [ 2.0 ] ),\n* 'shape': [],\n* 'strides': [ 0 ],\n* 'offset': 0,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var out = includes( [ x, searchElement ] );\n* // returns true\n*/\nfunction includes( arrays ) {\n\tvar isCmplx;\n\tvar value;\n\tvar ndims;\n\tvar xmmv;\n\tvar shx;\n\tvar iox;\n\tvar len;\n\tvar sx;\n\tvar ox;\n\tvar ns;\n\tvar x;\n\tvar d;\n\tvar i;\n\n\t// Unpack the ndarrays and standardize ndarray meta data:\n\tx = ndarray2object( arrays[ 0 ] );\n\tvalue = ndarray2object( arrays[ 1 ] );\n\n\tshx = x.shape;\n\tndims = shx.length;\n\n\t// Resolve the search element as a scalar:\n\tvalue = value.accessors[ 0 ]( value.data, value.offset );\n\n\t// Check for known array types which can be reinterpreted for better iteration performance...\n\tif ( isBooleanArray( x.data ) ) {\n\t\tif ( !isBoolean( value ) ) {\n\t\t\treturn false;\n\t\t}\n\t\tx.data = reinterpretBoolean( x.data, 0 );\n\t\tx.accessorProtocol = false;\n\t} else if ( isComplexArray( x.data ) ) {\n\t\tif ( !isComplexLike( value ) ) {\n\t\t\treturn false;\n\t\t}\n\t\t// TODO: consider adding something like `complex/base/complex2object` where we normalize a user-provided complex-like object to a standardized object shape\n\t\tvalue = {\n\t\t\t're': real( value ),\n\t\t\t'im': imag( value )\n\t\t};\n\t\tx.data = reinterpretComplex( x.data, 0 );\n\t\tx.accessorProtocol = false;\n\t\tx.strides = gscal( ndims, 2, x.strides, 1 );\n\t\tx.offset *= 2;\n\t\tisCmplx = true;\n\t}\n\t// Determine whether we can avoid iteration altogether...\n\tif ( ndims === 0 ) {\n\t\tif ( x.accessorProtocol ) {\n\t\t\treturn ACCESSOR_INCLUDES[ ndims ]( x, value );\n\t\t}\n\t\tif ( isCmplx ) {\n\t\t\treturn COMPLEX_INCLUDES[ ndims ]( x, value );\n\t\t}\n\t\treturn INCLUDES[ ndims ]( x, value );\n\t}\n\t// Compute the number of elements and the number of singleton dimensions...\n\tlen = 1; // number of elements\n\tns = 0; // number of singleton dimensions\n\tfor ( i = 0; i < ndims; i++ ) {\n\t\td = shx[ i ];\n\n\t\t// Note that, if one of the dimensions is `0`, the length will be `0`...\n\t\tlen *= d;\n\n\t\t// Check whether the current dimension is a singleton dimension...\n\t\tif ( d === 1 ) {\n\t\t\tns += 1;\n\t\t}\n\t}\n\t// Check whether we were provided an empty ndarray...\n\tif ( len === 0 ) {\n\t\t// An empty array is a trivial case in which an array does not contain a search element:\n\t\treturn false;\n\t}\n\t// Determine whether the ndarray is one-dimensional and thus readily translates to a one-dimensional strided array...\n\tif ( ndims === 1 ) {\n\t\tif ( x.accessorProtocol ) {\n\t\t\treturn ACCESSOR_INCLUDES[ ndims ]( x, value );\n\t\t}\n\t\tif ( isCmplx ) {\n\t\t\treturn COMPLEX_INCLUDES[ ndims ]( x, value );\n\t\t}\n\t\treturn INCLUDES[ ndims ]( x, value );\n\t}\n\tsx = x.strides;\n\n\t// Determine whether the ndarray has only **one** non-singleton dimension (e.g., ndims=4, shape=[10,1,1,1]) so that we can treat an ndarray as being equivalent to a one-dimensional strided array...\n\tif ( ns === ndims-1 ) {\n\t\t// Get the index of the non-singleton dimension...\n\t\tfor ( i = 0; i < ndims; i++ ) {\n\t\t\tif ( shx[ i ] !== 1 ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tx.shape = [ shx[i] ];\n\t\tx.strides = [ sx[i] ];\n\t\tif ( x.accessorProtocol ) {\n\t\t\treturn ACCESSOR_INCLUDES[ 1 ]( x, value );\n\t\t}\n\t\tif ( isCmplx ) {\n\t\t\treturn COMPLEX_INCLUDES[ 1 ]( x, value );\n\t\t}\n\t\treturn INCLUDES[ 1 ]( x, value );\n\t}\n\tiox = iterationOrder( sx ); // +/-1\n\n\t// Determine whether we can avoid blocked iteration...\n\tif ( iox !== 0 ) {\n\t\t// Determine the minimum and maximum linear indices which are accessible by the array view:\n\t\txmmv = minmaxViewBufferIndex( shx, sx, x.offset );\n\n\t\t// Determine whether we can ignore shape (and strides) and treat the ndarray as a linear one-dimensional strided array...\n\t\tif ( len === ( xmmv[1]-xmmv[0]+1 ) || ( isCmplx && len*2 === ( xmmv[1]-xmmv[0]+2 ) ) ) { // eslint-disable-line max-len\n\t\t\t// Note: the above is equivalent to @stdlib/ndarray/base/assert/is-contiguous, but in-lined so we can retain computed values...\n\t\t\tif ( iox === 1 ) {\n\t\t\t\tox = xmmv[ 0 ];\n\t\t\t} else {\n\t\t\t\tox = xmmv[ 1 ];\n\t\t\t}\n\t\t\tx.shape = [ len ];\n\t\t\tx.strides = [ ( isCmplx ) ? iox*2 : iox ];\n\t\t\tx.offset = ox;\n\t\t\tif ( x.accessorProtocol ) {\n\t\t\t\treturn ACCESSOR_INCLUDES[ 1 ]( x, value );\n\t\t\t}\n\t\t\tif ( isCmplx ) {\n\t\t\t\treturn COMPLEX_INCLUDES[ 1 ]( x, value );\n\t\t\t}\n\t\t\treturn INCLUDES[ 1 ]( x, value );\n\t\t}\n\t\t// The ndarray is non-contiguous, so we cannot directly use one-dimensional array functionality...\n\n\t\t// Determine whether we can use simple nested loops...\n\t\tif ( ndims <= MAX_DIMS ) {\n\t\t\t// So long as iteration always moves in the same direction (i.e., no mixed sign strides), we can leverage cache-optimal (i.e., normal) nested loops without resorting to blocked iteration...\n\t\t\tif ( x.accessorProtocol ) {\n\t\t\t\treturn ACCESSOR_INCLUDES[ ndims ]( x, value );\n\t\t\t}\n\t\t\tif ( isCmplx ) {\n\t\t\t\treturn COMPLEX_INCLUDES[ ndims ]( x, value );\n\t\t\t}\n\t\t\treturn INCLUDES[ ndims ]( x, value );\n\t\t}\n\t\t// Fall-through to blocked iteration...\n\t}\n\t// At this point, we're either dealing with a non-contiguous n-dimensional array or a high dimensional n-dimensional array, so our only hope is that we can still perform blocked iteration...\n\n\t// Determine whether we can perform blocked iteration...\n\tif ( ndims <= MAX_DIMS ) {\n\t\tif ( x.accessorProtocol ) {\n\t\t\treturn BLOCKED_ACCESSOR_INCLUDES[ ndims-2 ]( x, value );\n\t\t}\n\t\tif ( isCmplx ) {\n\t\t\treturn BLOCKED_COMPLEX_INCLUDES[ ndims-2 ]( x, value );\n\t\t}\n\t\treturn BLOCKED_INCLUDES[ ndims-2 ]( x, value );\n\t}\n\t// Fall-through to linear view iteration without regard for how data is stored in memory (i.e., take the slow path)...\n\tif ( x.accessorProtocol ) {\n\t\treturn accessorincludesnd( x, value );\n\t}\n\tif ( isCmplx ) {\n\t\treturn complexincludesnd( x, value );\n\t}\n\treturn includesnd( x, value );\n}\n\n\n// EXPORTS //\n\nexport default includes;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* import Float64Array from '@stdlib/array-float64';\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [];\n*\n* // Define the array strides:\n* var sx = [ 0 ];\n*\n* // Define the index offset:\n* var ox = 1;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'float64',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var out = includes0d( x, 2.0 );\n* // returns true\n*\n* out = includes0d( x, 100.0 );\n* // returns false\n*/\nfunction includes0d( x, value ) {\n\treturn ( x.data[ x.offset ] === value );\n}\n\n\n// EXPORTS //\n\nexport default includes0d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* import Float64Array from '@stdlib/array-float64';\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 4 ];\n*\n* // Define the array strides:\n* var sx = [ 2 ];\n*\n* // Define the index offset:\n* var ox = 1;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'float64',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var out = includes1d( x, 6.0 );\n* // returns true\n*\n* out = includes1d( x, 100.0 );\n* // returns false\n*/\nfunction includes1d( x, value ) {\n\tvar xbuf;\n\tvar dx0;\n\tvar S0;\n\tvar ix;\n\tvar i0;\n\n\t// Note on variable naming convention: S#, dx#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables: dimensions and loop offset (pointer) increments:\n\tS0 = x.shape[ 0 ];\n\tdx0 = x.strides[ 0 ];\n\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\tif ( xbuf[ ix ] === value ) {\n\t\t\treturn true;\n\t\t}\n\t\tix += dx0;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default includes1d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nimport strides2order from '@stdlib/ndarray-base-strides2order';\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* import Float64Array from '@stdlib/array-float64';\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'float64',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var out = includes2d( x, 6.0 );\n* // returns true\n*\n* out = includes2d( x, 100.0 );\n* // returns false\n*/\nfunction includes2d( x, value ) {\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 1 ];\n\t\tS1 = sh[ 0 ];\n\t\tdx0 = sx[ 1 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 0 ] - ( S0*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tif ( xbuf[ ix ] === value ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tix += dx0;\n\t\t}\n\t\tix += dx1;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default includes2d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nimport strides2order from '@stdlib/ndarray-base-strides2order';\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* import Float64Array from '@stdlib/array-float64';\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 3, 1, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 4, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'float64',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var out = includes3d( x, 6.0 );\n* // returns true\n*\n* out = includes3d( x, 100.0 );\n* // returns false\n*/\nfunction includes3d( x, value ) {\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 2 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 0 ];\n\t\tdx0 = sx[ 2 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[2] );\n\t\tdx2 = sx[ 0 ] - ( S1*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 2 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[1] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\tif ( xbuf[ ix ] === value ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tix += dx0;\n\t\t\t}\n\t\t\tix += dx1;\n\t\t}\n\t\tix += dx2;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default includes3d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nimport strides2order from '@stdlib/ndarray-base-strides2order';\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* import Float64Array from '@stdlib/array-float64';\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 3, 1, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 12, 4, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'float64',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var out = includes4d( x, 6.0 );\n* // returns true\n*\n* out = includes4d( x, 100.0 );\n* // returns false\n*/\nfunction includes4d( x, value ) {\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 3 ];\n\t\tS1 = sh[ 2 ];\n\t\tS2 = sh[ 1 ];\n\t\tS3 = sh[ 0 ];\n\t\tdx0 = sx[ 3 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 2 ] - ( S0*sx[3] );\n\t\tdx2 = sx[ 1 ] - ( S1*sx[2] );\n\t\tdx3 = sx[ 0 ] - ( S2*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 2 ];\n\t\tS3 = sh[ 3 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[1] );\n\t\tdx3 = sx[ 3 ] - ( S2*sx[2] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\tif ( xbuf[ ix ] === value ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx0;\n\t\t\t\t}\n\t\t\t\tix += dx1;\n\t\t\t}\n\t\t\tix += dx2;\n\t\t}\n\t\tix += dx3;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default includes4d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth */\n\n'use strict';\n\n// MODULES //\n\nimport strides2order from '@stdlib/ndarray-base-strides2order';\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* import Float64Array from '@stdlib/array-float64';\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 3, 1, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 12, 12, 4, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'float64',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var out = includes5d( x, 6.0 );\n* // returns true\n*\n* out = includes5d( x, 100.0 );\n* // returns false\n*/\nfunction includes5d( x, value ) {\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 4 ];\n\t\tS1 = sh[ 3 ];\n\t\tS2 = sh[ 2 ];\n\t\tS3 = sh[ 1 ];\n\t\tS4 = sh[ 0 ];\n\t\tdx0 = sx[ 4 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 3 ] - ( S0*sx[4] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[3] );\n\t\tdx3 = sx[ 1 ] - ( S2*sx[2] );\n\t\tdx4 = sx[ 0 ] - ( S3*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 2 ];\n\t\tS3 = sh[ 3 ];\n\t\tS4 = sh[ 4 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[1] );\n\t\tdx3 = sx[ 3 ] - ( S2*sx[2] );\n\t\tdx4 = sx[ 4 ] - ( S3*sx[3] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\tif ( xbuf[ ix ] === value ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx1;\n\t\t\t\t}\n\t\t\t\tix += dx2;\n\t\t\t}\n\t\t\tix += dx3;\n\t\t}\n\t\tix += dx4;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default includes5d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth */\n\n'use strict';\n\n// MODULES //\n\nimport strides2order from '@stdlib/ndarray-base-strides2order';\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* import Float64Array from '@stdlib/array-float64';\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 3, 1, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 12, 12, 12, 4, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'float64',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var out = includes6d( x, 6.0 );\n* // returns true\n*\n* out = includes6d( x, 100.0 );\n* // returns false\n*/\nfunction includes6d( x, value ) {\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar S5;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 5 ];\n\t\tS1 = sh[ 4 ];\n\t\tS2 = sh[ 3 ];\n\t\tS3 = sh[ 2 ];\n\t\tS4 = sh[ 1 ];\n\t\tS5 = sh[ 0 ];\n\t\tdx0 = sx[ 5 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 4 ] - ( S0*sx[5] );\n\t\tdx2 = sx[ 3 ] - ( S1*sx[4] );\n\t\tdx3 = sx[ 2 ] - ( S2*sx[3] );\n\t\tdx4 = sx[ 1 ] - ( S3*sx[2] );\n\t\tdx5 = sx[ 0 ] - ( S4*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 2 ];\n\t\tS3 = sh[ 3 ];\n\t\tS4 = sh[ 4 ];\n\t\tS5 = sh[ 5 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[1] );\n\t\tdx3 = sx[ 3 ] - ( S2*sx[2] );\n\t\tdx4 = sx[ 4 ] - ( S3*sx[3] );\n\t\tdx5 = sx[ 5 ] - ( S4*sx[4] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i5 = 0; i5 < S5; i5++ ) {\n\t\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\t\tif ( xbuf[ ix ] === value ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tix += dx1;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx2;\n\t\t\t\t}\n\t\t\t\tix += dx3;\n\t\t\t}\n\t\t\tix += dx4;\n\t\t}\n\t\tix += dx5;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default includes6d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth */\n\n'use strict';\n\n// MODULES //\n\nimport strides2order from '@stdlib/ndarray-base-strides2order';\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* import Float64Array from '@stdlib/array-float64';\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 3, 1, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 12, 12, 12, 12, 4, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'float64',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var out = includes7d( x, 6.0 );\n* // returns true\n*\n* out = includes7d( x, 100.0 );\n* // returns false\n*/\nfunction includes7d( x, value ) {\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar dx6;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar S5;\n\tvar S6;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar i6;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 6 ];\n\t\tS1 = sh[ 5 ];\n\t\tS2 = sh[ 4 ];\n\t\tS3 = sh[ 3 ];\n\t\tS4 = sh[ 2 ];\n\t\tS5 = sh[ 1 ];\n\t\tS6 = sh[ 0 ];\n\t\tdx0 = sx[ 6 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 5 ] - ( S0*sx[6] );\n\t\tdx2 = sx[ 4 ] - ( S1*sx[5] );\n\t\tdx3 = sx[ 3 ] - ( S2*sx[4] );\n\t\tdx4 = sx[ 2 ] - ( S3*sx[3] );\n\t\tdx5 = sx[ 1 ] - ( S4*sx[2] );\n\t\tdx6 = sx[ 0 ] - ( S5*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 2 ];\n\t\tS3 = sh[ 3 ];\n\t\tS4 = sh[ 4 ];\n\t\tS5 = sh[ 5 ];\n\t\tS6 = sh[ 6 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[1] );\n\t\tdx3 = sx[ 3 ] - ( S2*sx[2] );\n\t\tdx4 = sx[ 4 ] - ( S3*sx[3] );\n\t\tdx5 = sx[ 5 ] - ( S4*sx[4] );\n\t\tdx6 = sx[ 6 ] - ( S5*sx[5] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i6 = 0; i6 < S6; i6++ ) {\n\t\tfor ( i5 = 0; i5 < S5; i5++ ) {\n\t\t\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\t\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\t\t\tif ( xbuf[ ix ] === value ) {\n\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tix += dx1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tix += dx2;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx3;\n\t\t\t\t}\n\t\t\t\tix += dx4;\n\t\t\t}\n\t\t\tix += dx5;\n\t\t}\n\t\tix += dx6;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default includes7d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth */\n\n'use strict';\n\n// MODULES //\n\nimport strides2order from '@stdlib/ndarray-base-strides2order';\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* import Float64Array from '@stdlib/array-float64';\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 1, 3, 1, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 12, 12, 12, 12, 12, 4, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'float64',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var out = includes8d( x, 6.0 );\n* // returns true\n*\n* out = includes8d( x, 100.0 );\n* // returns false\n*/\nfunction includes8d( x, value ) {\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar dx6;\n\tvar dx7;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar S5;\n\tvar S6;\n\tvar S7;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar i6;\n\tvar i7;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 7 ];\n\t\tS1 = sh[ 6 ];\n\t\tS2 = sh[ 5 ];\n\t\tS3 = sh[ 4 ];\n\t\tS4 = sh[ 3 ];\n\t\tS5 = sh[ 2 ];\n\t\tS6 = sh[ 1 ];\n\t\tS7 = sh[ 0 ];\n\t\tdx0 = sx[ 7 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 6 ] - ( S0*sx[7] );\n\t\tdx2 = sx[ 5 ] - ( S1*sx[6] );\n\t\tdx3 = sx[ 4 ] - ( S2*sx[5] );\n\t\tdx4 = sx[ 3 ] - ( S3*sx[4] );\n\t\tdx5 = sx[ 2 ] - ( S4*sx[3] );\n\t\tdx6 = sx[ 1 ] - ( S5*sx[2] );\n\t\tdx7 = sx[ 0 ] - ( S6*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 2 ];\n\t\tS3 = sh[ 3 ];\n\t\tS4 = sh[ 4 ];\n\t\tS5 = sh[ 5 ];\n\t\tS6 = sh[ 6 ];\n\t\tS7 = sh[ 7 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[1] );\n\t\tdx3 = sx[ 3 ] - ( S2*sx[2] );\n\t\tdx4 = sx[ 4 ] - ( S3*sx[3] );\n\t\tdx5 = sx[ 5 ] - ( S4*sx[4] );\n\t\tdx6 = sx[ 6 ] - ( S5*sx[5] );\n\t\tdx7 = sx[ 7 ] - ( S6*sx[6] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i7 = 0; i7 < S7; i7++ ) {\n\t\tfor ( i6 = 0; i6 < S6; i6++ ) {\n\t\t\tfor ( i5 = 0; i5 < S5; i5++ ) {\n\t\t\t\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\t\t\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\t\t\t\tif ( xbuf[ ix ] === value ) {\n\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tix += dx1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tix += dx2;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tix += dx3;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx4;\n\t\t\t\t}\n\t\t\t\tix += dx5;\n\t\t\t}\n\t\t\tix += dx6;\n\t\t}\n\t\tix += dx7;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default includes8d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth */\n\n'use strict';\n\n// MODULES //\n\nimport strides2order from '@stdlib/ndarray-base-strides2order';\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* import Float64Array from '@stdlib/array-float64';\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 1, 1, 3, 1, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 12, 12, 12, 12, 12, 12, 4, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'float64',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var out = includes9d( x, 6.0 );\n* // returns true\n*\n* out = includes9d( x, 100.0 );\n* // returns false\n*/\nfunction includes9d( x, value ) {\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar dx6;\n\tvar dx7;\n\tvar dx8;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar S5;\n\tvar S6;\n\tvar S7;\n\tvar S8;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar i6;\n\tvar i7;\n\tvar i8;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 8 ];\n\t\tS1 = sh[ 7 ];\n\t\tS2 = sh[ 6 ];\n\t\tS3 = sh[ 5 ];\n\t\tS4 = sh[ 4 ];\n\t\tS5 = sh[ 3 ];\n\t\tS6 = sh[ 2 ];\n\t\tS7 = sh[ 1 ];\n\t\tS8 = sh[ 0 ];\n\t\tdx0 = sx[ 8 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 7 ] - ( S0*sx[8] );\n\t\tdx2 = sx[ 6 ] - ( S1*sx[7] );\n\t\tdx3 = sx[ 5 ] - ( S2*sx[6] );\n\t\tdx4 = sx[ 4 ] - ( S3*sx[5] );\n\t\tdx5 = sx[ 3 ] - ( S4*sx[4] );\n\t\tdx6 = sx[ 2 ] - ( S5*sx[3] );\n\t\tdx7 = sx[ 1 ] - ( S6*sx[2] );\n\t\tdx8 = sx[ 0 ] - ( S7*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 2 ];\n\t\tS3 = sh[ 3 ];\n\t\tS4 = sh[ 4 ];\n\t\tS5 = sh[ 5 ];\n\t\tS6 = sh[ 6 ];\n\t\tS7 = sh[ 7 ];\n\t\tS8 = sh[ 8 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[1] );\n\t\tdx3 = sx[ 3 ] - ( S2*sx[2] );\n\t\tdx4 = sx[ 4 ] - ( S3*sx[3] );\n\t\tdx5 = sx[ 5 ] - ( S4*sx[4] );\n\t\tdx6 = sx[ 6 ] - ( S5*sx[5] );\n\t\tdx7 = sx[ 7 ] - ( S6*sx[6] );\n\t\tdx8 = sx[ 8 ] - ( S7*sx[7] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i8 = 0; i8 < S8; i8++ ) {\n\t\tfor ( i7 = 0; i7 < S7; i7++ ) {\n\t\t\tfor ( i6 = 0; i6 < S6; i6++ ) {\n\t\t\t\tfor ( i5 = 0; i5 < S5; i5++ ) {\n\t\t\t\t\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\t\t\t\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\t\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\t\t\t\t\tif ( xbuf[ ix ] === value ) {\n\t\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tix += dx1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tix += dx2;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tix += dx3;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tix += dx4;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx5;\n\t\t\t\t}\n\t\t\t\tix += dx6;\n\t\t\t}\n\t\t\tix += dx7;\n\t\t}\n\t\tix += dx8;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default includes9d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth */\n\n'use strict';\n\n// MODULES //\n\nimport strides2order from '@stdlib/ndarray-base-strides2order';\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* import Float64Array from '@stdlib/array-float64';\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 1, 1, 1, 3, 1, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 12, 12, 12, 12, 12, 12, 12, 4, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'float64',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var out = includes10d( x, 6.0 );\n* // returns true\n*\n* out = includes10d( x, 100.0 );\n* // returns false\n*/\nfunction includes10d( x, value ) { // eslint-disable-line max-statements\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar dx6;\n\tvar dx7;\n\tvar dx8;\n\tvar dx9;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar S5;\n\tvar S6;\n\tvar S7;\n\tvar S8;\n\tvar S9;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar i6;\n\tvar i7;\n\tvar i8;\n\tvar i9;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 9 ];\n\t\tS1 = sh[ 8 ];\n\t\tS2 = sh[ 7 ];\n\t\tS3 = sh[ 6 ];\n\t\tS4 = sh[ 5 ];\n\t\tS5 = sh[ 4 ];\n\t\tS6 = sh[ 3 ];\n\t\tS7 = sh[ 2 ];\n\t\tS8 = sh[ 1 ];\n\t\tS9 = sh[ 0 ];\n\t\tdx0 = sx[ 9 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 8 ] - ( S0*sx[9] );\n\t\tdx2 = sx[ 7 ] - ( S1*sx[8] );\n\t\tdx3 = sx[ 6 ] - ( S2*sx[7] );\n\t\tdx4 = sx[ 5 ] - ( S3*sx[6] );\n\t\tdx5 = sx[ 4 ] - ( S4*sx[5] );\n\t\tdx6 = sx[ 3 ] - ( S5*sx[4] );\n\t\tdx7 = sx[ 2 ] - ( S6*sx[3] );\n\t\tdx8 = sx[ 1 ] - ( S7*sx[2] );\n\t\tdx9 = sx[ 0 ] - ( S8*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 2 ];\n\t\tS3 = sh[ 3 ];\n\t\tS4 = sh[ 4 ];\n\t\tS5 = sh[ 5 ];\n\t\tS6 = sh[ 6 ];\n\t\tS7 = sh[ 7 ];\n\t\tS8 = sh[ 8 ];\n\t\tS9 = sh[ 9 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[1] );\n\t\tdx3 = sx[ 3 ] - ( S2*sx[2] );\n\t\tdx4 = sx[ 4 ] - ( S3*sx[3] );\n\t\tdx5 = sx[ 5 ] - ( S4*sx[4] );\n\t\tdx6 = sx[ 6 ] - ( S5*sx[5] );\n\t\tdx7 = sx[ 7 ] - ( S6*sx[6] );\n\t\tdx8 = sx[ 8 ] - ( S7*sx[7] );\n\t\tdx9 = sx[ 9 ] - ( S8*sx[8] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i9 = 0; i9 < S9; i9++ ) {\n\t\tfor ( i8 = 0; i8 < S8; i8++ ) {\n\t\t\tfor ( i7 = 0; i7 < S7; i7++ ) {\n\t\t\t\tfor ( i6 = 0; i6 < S6; i6++ ) {\n\t\t\t\t\tfor ( i5 = 0; i5 < S5; i5++ ) {\n\t\t\t\t\t\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\t\t\t\t\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\t\t\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\t\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\t\t\t\t\t\tif ( xbuf[ ix ] === value ) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tix += dx1;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tix += dx2;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tix += dx3;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tix += dx4;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tix += dx5;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx6;\n\t\t\t\t}\n\t\t\t\tix += dx7;\n\t\t\t}\n\t\t\tix += dx8;\n\t\t}\n\t\tix += dx9;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default includes10d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {Array} x.accessors - data buffer accessors\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* import toAccessorArray from '@stdlib/array-base-to-accessor-array';\n* import accessors from '@stdlib/array-base-accessors';\n*\n* // Create a data buffer:\n* var xbuf = toAccessorArray( [ 1.0, 2.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [];\n*\n* // Define the array strides:\n* var sx = [ 0 ];\n*\n* // Define the index offset:\n* var ox = 1;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'generic',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major',\n* 'accessors': accessors( xbuf ).accessors\n* };\n*\n* // Perform reduction:\n* var out = includes0d( x, 2.0 );\n* // returns true\n*\n* out = includes0d( x, 100.0 );\n* // returns false\n*/\nfunction includes0d( x, value ) {\n\treturn ( x.accessors[ 0 ]( x.data, x.offset ) === value );\n}\n\n\n// EXPORTS //\n\nexport default includes0d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {Array} x.accessors - data buffer accessors\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* import toAccessorArray from '@stdlib/array-base-to-accessor-array';\n* import accessors from '@stdlib/array-base-accessors';\n*\n* // Create a data buffer:\n* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 4 ];\n*\n* // Define the array strides:\n* var sx = [ 2 ];\n*\n* // Define the index offset:\n* var ox = 1;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'generic',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major',\n* 'accessors': accessors( xbuf ).accessors\n* };\n*\n* // Perform reduction:\n* var out = includes1d( x, 6.0 );\n* // returns true\n*\n* out = includes1d( x, 100.0 );\n* // returns false\n*/\nfunction includes1d( x, value ) {\n\tvar xbuf;\n\tvar get;\n\tvar dx0;\n\tvar S0;\n\tvar ix;\n\tvar i0;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables: dimensions and loop offset (pointer) increments...\n\tS0 = x.shape[ 0 ];\n\tdx0 = x.strides[ 0 ];\n\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache accessor:\n\tget = x.accessors[ 0 ];\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\tif ( get( xbuf, ix ) === value ) {\n\t\t\treturn true;\n\t\t}\n\t\tix += dx0;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default includes1d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nimport strides2order from '@stdlib/ndarray-base-strides2order';\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {Array} x.accessors - data buffer accessors\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* import toAccessorArray from '@stdlib/array-base-to-accessor-array';\n* import accessors from '@stdlib/array-base-accessors';\n*\n* // Create a data buffer:\n* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'generic',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major',\n* 'accessors': accessors( xbuf ).accessors\n* };\n*\n* // Perform reduction:\n* var out = includes2d( x, 6.0 );\n* // returns true\n*\n* out = includes2d( x, 100.0 );\n* // returns false\n*/\nfunction includes2d( x, value ) {\n\tvar xbuf;\n\tvar get;\n\tvar dx0;\n\tvar dx1;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 1 ];\n\t\tS1 = sh[ 0 ];\n\t\tdx0 = sx[ 1 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 0 ] - ( S0*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache accessor:\n\tget = x.accessors[ 0 ];\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tif ( get( xbuf, ix ) === value ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tix += dx0;\n\t\t}\n\t\tix += dx1;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default includes2d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nimport strides2order from '@stdlib/ndarray-base-strides2order';\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {Array} x.accessors - data buffer accessors\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* import toAccessorArray from '@stdlib/array-base-to-accessor-array';\n* import accessors from '@stdlib/array-base-accessors';\n*\n* // Create a data buffer:\n* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'generic',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major',\n* 'accessors': accessors( xbuf ).accessors\n* };\n*\n* // Perform reduction:\n* var out = includes3d( x, 6.0 );\n* // returns true\n*\n* out = includes3d( x, 100.0 );\n* // returns false\n*/\nfunction includes3d( x, value ) {\n\tvar xbuf;\n\tvar get;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 2 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 0 ];\n\t\tdx0 = sx[ 2 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[2] );\n\t\tdx2 = sx[ 0 ] - ( S1*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 2 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[1] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache accessor:\n\tget = x.accessors[ 0 ];\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\tif ( get( xbuf, ix ) === value ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tix += dx0;\n\t\t\t}\n\t\t\tix += dx1;\n\t\t}\n\t\tix += dx2;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default includes3d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nimport strides2order from '@stdlib/ndarray-base-strides2order';\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {Array} x.accessors - data buffer accessors\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* import toAccessorArray from '@stdlib/array-base-to-accessor-array';\n* import accessors from '@stdlib/array-base-accessors';\n*\n* // Create a data buffer:\n* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'generic',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major',\n* 'accessors': accessors( xbuf ).accessors\n* };\n*\n* // Perform reduction:\n* var out = includes4d( x, 6.0 );\n* // returns true\n*\n* out = includes4d( x, 100.0 );\n* // returns false\n*/\nfunction includes4d( x, value ) {\n\tvar xbuf;\n\tvar get;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 3 ];\n\t\tS1 = sh[ 2 ];\n\t\tS2 = sh[ 1 ];\n\t\tS3 = sh[ 0 ];\n\t\tdx0 = sx[ 3 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 2 ] - ( S0*sx[3] );\n\t\tdx2 = sx[ 1 ] - ( S1*sx[2] );\n\t\tdx3 = sx[ 0 ] - ( S2*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 2 ];\n\t\tS3 = sh[ 3 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[1] );\n\t\tdx3 = sx[ 3 ] - ( S2*sx[2] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache accessor:\n\tget = x.accessors[ 0 ];\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\tif ( get( xbuf, ix ) === value ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx0;\n\t\t\t\t}\n\t\t\t\tix += dx1;\n\t\t\t}\n\t\t\tix += dx2;\n\t\t}\n\t\tix += dx3;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default includes4d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth */\n\n'use strict';\n\n// MODULES //\n\nimport strides2order from '@stdlib/ndarray-base-strides2order';\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {Array} x.accessors - data buffer accessors\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* import toAccessorArray from '@stdlib/array-base-to-accessor-array';\n* import accessors from '@stdlib/array-base-accessors';\n*\n* // Create a data buffer:\n* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 8, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'generic',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major',\n* 'accessors': accessors( xbuf ).accessors\n* };\n*\n* // Perform reduction:\n* var out = includes5d( x, 6.0 );\n* // returns true\n*\n* out = includes5d( x, 100.0 );\n* // returns false\n*/\nfunction includes5d( x, value ) {\n\tvar xbuf;\n\tvar get;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 4 ];\n\t\tS1 = sh[ 3 ];\n\t\tS2 = sh[ 2 ];\n\t\tS3 = sh[ 1 ];\n\t\tS4 = sh[ 0 ];\n\t\tdx0 = sx[ 4 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 3 ] - ( S0*sx[4] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[3] );\n\t\tdx3 = sx[ 1 ] - ( S2*sx[2] );\n\t\tdx4 = sx[ 0 ] - ( S3*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 2 ];\n\t\tS3 = sh[ 3 ];\n\t\tS4 = sh[ 4 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[1] );\n\t\tdx3 = sx[ 3 ] - ( S2*sx[2] );\n\t\tdx4 = sx[ 4 ] - ( S3*sx[3] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache accessor:\n\tget = x.accessors[ 0 ];\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\tif ( get( xbuf, ix ) === value ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx1;\n\t\t\t\t}\n\t\t\t\tix += dx2;\n\t\t\t}\n\t\t\tix += dx3;\n\t\t}\n\t\tix += dx4;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default includes5d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth */\n\n'use strict';\n\n// MODULES //\n\nimport strides2order from '@stdlib/ndarray-base-strides2order';\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {Array} x.accessors - data buffer accessors\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* import toAccessorArray from '@stdlib/array-base-to-accessor-array';\n* import accessors from '@stdlib/array-base-accessors';\n*\n* // Create a data buffer:\n* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 8, 8, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'generic',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major',\n* 'accessors': accessors( xbuf ).accessors\n* };\n*\n* // Perform reduction:\n* var out = includes6d( x, 6.0 );\n* // returns true\n*\n* out = includes6d( x, 100.0 );\n* // returns false\n*/\nfunction includes6d( x, value ) {\n\tvar xbuf;\n\tvar get;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar S5;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 5 ];\n\t\tS1 = sh[ 4 ];\n\t\tS2 = sh[ 3 ];\n\t\tS3 = sh[ 2 ];\n\t\tS4 = sh[ 1 ];\n\t\tS5 = sh[ 0 ];\n\t\tdx0 = sx[ 5 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 4 ] - ( S0*sx[5] );\n\t\tdx2 = sx[ 3 ] - ( S1*sx[4] );\n\t\tdx3 = sx[ 2 ] - ( S2*sx[3] );\n\t\tdx4 = sx[ 1 ] - ( S3*sx[2] );\n\t\tdx5 = sx[ 0 ] - ( S4*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 2 ];\n\t\tS3 = sh[ 3 ];\n\t\tS4 = sh[ 4 ];\n\t\tS5 = sh[ 5 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[1] );\n\t\tdx3 = sx[ 3 ] - ( S2*sx[2] );\n\t\tdx4 = sx[ 4 ] - ( S3*sx[3] );\n\t\tdx5 = sx[ 5 ] - ( S4*sx[4] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache accessor:\n\tget = x.accessors[ 0 ];\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i5 = 0; i5 < S5; i5++ ) {\n\t\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\t\tif ( get( xbuf, ix ) === value ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tix += dx1;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx2;\n\t\t\t\t}\n\t\t\t\tix += dx3;\n\t\t\t}\n\t\t\tix += dx4;\n\t\t}\n\t\tix += dx5;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default includes6d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth */\n\n'use strict';\n\n// MODULES //\n\nimport strides2order from '@stdlib/ndarray-base-strides2order';\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {Array} x.accessors - data buffer accessors\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* import toAccessorArray from '@stdlib/array-base-to-accessor-array';\n* import accessors from '@stdlib/array-base-accessors';\n*\n* // Create a data buffer:\n* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 8, 8, 8, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'generic',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major',\n* 'accessors': accessors( xbuf ).accessors\n* };\n*\n* // Perform reduction:\n* var out = includes7d( x, 6.0 );\n* // returns true\n*\n* out = includes7d( x, 100.0 );\n* // returns false\n*/\nfunction includes7d( x, value ) {\n\tvar xbuf;\n\tvar get;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar dx6;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar S5;\n\tvar S6;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar i6;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 6 ];\n\t\tS1 = sh[ 5 ];\n\t\tS2 = sh[ 4 ];\n\t\tS3 = sh[ 3 ];\n\t\tS4 = sh[ 2 ];\n\t\tS5 = sh[ 1 ];\n\t\tS6 = sh[ 0 ];\n\t\tdx0 = sx[ 6 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 5 ] - ( S0*sx[6] );\n\t\tdx2 = sx[ 4 ] - ( S1*sx[5] );\n\t\tdx3 = sx[ 3 ] - ( S2*sx[4] );\n\t\tdx4 = sx[ 2 ] - ( S3*sx[3] );\n\t\tdx5 = sx[ 1 ] - ( S4*sx[2] );\n\t\tdx6 = sx[ 0 ] - ( S5*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 2 ];\n\t\tS3 = sh[ 3 ];\n\t\tS4 = sh[ 4 ];\n\t\tS5 = sh[ 5 ];\n\t\tS6 = sh[ 6 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[1] );\n\t\tdx3 = sx[ 3 ] - ( S2*sx[2] );\n\t\tdx4 = sx[ 4 ] - ( S3*sx[3] );\n\t\tdx5 = sx[ 5 ] - ( S4*sx[4] );\n\t\tdx6 = sx[ 6 ] - ( S5*sx[5] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache accessor:\n\tget = x.accessors[ 0 ];\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i6 = 0; i6 < S6; i6++ ) {\n\t\tfor ( i5 = 0; i5 < S5; i5++ ) {\n\t\t\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\t\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\t\t\tif ( get( xbuf, ix ) === value ) {\n\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tix += dx1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tix += dx2;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx3;\n\t\t\t\t}\n\t\t\t\tix += dx4;\n\t\t\t}\n\t\t\tix += dx5;\n\t\t}\n\t\tix += dx6;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default includes7d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth */\n\n'use strict';\n\n// MODULES //\n\nimport strides2order from '@stdlib/ndarray-base-strides2order';\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {Array} x.accessors - data buffer accessors\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* import toAccessorArray from '@stdlib/array-base-to-accessor-array';\n* import accessors from '@stdlib/array-base-accessors';\n*\n* // Create a data buffer:\n* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 8, 8, 8, 8, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'generic',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major',\n* 'accessors': accessors( xbuf ).accessors\n* };\n*\n* // Perform reduction:\n* var out = includes8d( x, 6.0 );\n* // returns true\n*\n* out = includes8d( x, 100.0 );\n* // returns false\n*/\nfunction includes8d( x, value ) {\n\tvar xbuf;\n\tvar get;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar dx6;\n\tvar dx7;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar S5;\n\tvar S6;\n\tvar S7;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar i6;\n\tvar i7;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 7 ];\n\t\tS1 = sh[ 6 ];\n\t\tS2 = sh[ 5 ];\n\t\tS3 = sh[ 4 ];\n\t\tS4 = sh[ 3 ];\n\t\tS5 = sh[ 2 ];\n\t\tS6 = sh[ 1 ];\n\t\tS7 = sh[ 0 ];\n\t\tdx0 = sx[ 7 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 6 ] - ( S0*sx[7] );\n\t\tdx2 = sx[ 5 ] - ( S1*sx[6] );\n\t\tdx3 = sx[ 4 ] - ( S2*sx[5] );\n\t\tdx4 = sx[ 3 ] - ( S3*sx[4] );\n\t\tdx5 = sx[ 2 ] - ( S4*sx[3] );\n\t\tdx6 = sx[ 1 ] - ( S5*sx[2] );\n\t\tdx7 = sx[ 0 ] - ( S6*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 2 ];\n\t\tS3 = sh[ 3 ];\n\t\tS4 = sh[ 4 ];\n\t\tS5 = sh[ 5 ];\n\t\tS6 = sh[ 6 ];\n\t\tS7 = sh[ 7 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[1] );\n\t\tdx3 = sx[ 3 ] - ( S2*sx[2] );\n\t\tdx4 = sx[ 4 ] - ( S3*sx[3] );\n\t\tdx5 = sx[ 5 ] - ( S4*sx[4] );\n\t\tdx6 = sx[ 6 ] - ( S5*sx[5] );\n\t\tdx7 = sx[ 7 ] - ( S6*sx[6] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache accessor:\n\tget = x.accessors[ 0 ];\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i7 = 0; i7 < S7; i7++ ) {\n\t\tfor ( i6 = 0; i6 < S6; i6++ ) {\n\t\t\tfor ( i5 = 0; i5 < S5; i5++ ) {\n\t\t\t\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\t\t\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\t\t\t\tif ( get( xbuf, ix ) === value ) {\n\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tix += dx1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tix += dx2;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tix += dx3;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx4;\n\t\t\t\t}\n\t\t\t\tix += dx5;\n\t\t\t}\n\t\t\tix += dx6;\n\t\t}\n\t\tix += dx7;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default includes8d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth */\n\n'use strict';\n\n// MODULES //\n\nimport strides2order from '@stdlib/ndarray-base-strides2order';\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {Array} x.accessors - data buffer accessors\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* import toAccessorArray from '@stdlib/array-base-to-accessor-array';\n* import accessors from '@stdlib/array-base-accessors';\n*\n* // Create a data buffer:\n* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 1, 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 8, 8, 8, 8, 8, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'generic',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major',\n* 'accessors': accessors( xbuf ).accessors\n* };\n*\n* // Perform reduction:\n* var out = includes9d( x, 6.0 );\n* // returns true\n*\n* out = includes9d( x, 100.0 );\n* // returns false\n*/\nfunction includes9d( x, value ) {\n\tvar xbuf;\n\tvar get;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar dx6;\n\tvar dx7;\n\tvar dx8;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar S5;\n\tvar S6;\n\tvar S7;\n\tvar S8;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar i6;\n\tvar i7;\n\tvar i8;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 8 ];\n\t\tS1 = sh[ 7 ];\n\t\tS2 = sh[ 6 ];\n\t\tS3 = sh[ 5 ];\n\t\tS4 = sh[ 4 ];\n\t\tS5 = sh[ 3 ];\n\t\tS6 = sh[ 2 ];\n\t\tS7 = sh[ 1 ];\n\t\tS8 = sh[ 0 ];\n\t\tdx0 = sx[ 8 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 7 ] - ( S0*sx[8] );\n\t\tdx2 = sx[ 6 ] - ( S1*sx[7] );\n\t\tdx3 = sx[ 5 ] - ( S2*sx[6] );\n\t\tdx4 = sx[ 4 ] - ( S3*sx[5] );\n\t\tdx5 = sx[ 3 ] - ( S4*sx[4] );\n\t\tdx6 = sx[ 2 ] - ( S5*sx[3] );\n\t\tdx7 = sx[ 1 ] - ( S6*sx[2] );\n\t\tdx8 = sx[ 0 ] - ( S7*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 2 ];\n\t\tS3 = sh[ 3 ];\n\t\tS4 = sh[ 4 ];\n\t\tS5 = sh[ 5 ];\n\t\tS6 = sh[ 6 ];\n\t\tS7 = sh[ 7 ];\n\t\tS8 = sh[ 8 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[1] );\n\t\tdx3 = sx[ 3 ] - ( S2*sx[2] );\n\t\tdx4 = sx[ 4 ] - ( S3*sx[3] );\n\t\tdx5 = sx[ 5 ] - ( S4*sx[4] );\n\t\tdx6 = sx[ 6 ] - ( S5*sx[5] );\n\t\tdx7 = sx[ 7 ] - ( S6*sx[6] );\n\t\tdx8 = sx[ 8 ] - ( S7*sx[7] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache accessor:\n\tget = x.accessors[ 0 ];\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i8 = 0; i8 < S8; i8++ ) {\n\t\tfor ( i7 = 0; i7 < S7; i7++ ) {\n\t\t\tfor ( i6 = 0; i6 < S6; i6++ ) {\n\t\t\t\tfor ( i5 = 0; i5 < S5; i5++ ) {\n\t\t\t\t\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\t\t\t\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\t\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\t\t\t\t\tif ( get( xbuf, ix ) === value ) {\n\t\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tix += dx1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tix += dx2;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tix += dx3;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tix += dx4;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx5;\n\t\t\t\t}\n\t\t\t\tix += dx6;\n\t\t\t}\n\t\t\tix += dx7;\n\t\t}\n\t\tix += dx8;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default includes9d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth */\n\n'use strict';\n\n// MODULES //\n\nimport strides2order from '@stdlib/ndarray-base-strides2order';\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {Array} x.accessors - data buffer accessors\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* import toAccessorArray from '@stdlib/array-base-to-accessor-array';\n* import accessors from '@stdlib/array-base-accessors';\n*\n* // Create a data buffer:\n* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 1, 1, 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 8, 8, 8, 8, 8, 8, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'generic',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major',\n* 'accessors': accessors( xbuf ).accessors\n* };\n*\n* // Perform reduction:\n* var out = includes10d( x, 6.0 );\n* // returns true\n*\n* out = includes10d( x, 100.0 );\n* // returns false\n*/\nfunction includes10d( x, value ) { // eslint-disable-line max-statements\n\tvar xbuf;\n\tvar get;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar dx6;\n\tvar dx7;\n\tvar dx8;\n\tvar dx9;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar S5;\n\tvar S6;\n\tvar S7;\n\tvar S8;\n\tvar S9;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar i6;\n\tvar i7;\n\tvar i8;\n\tvar i9;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 9 ];\n\t\tS1 = sh[ 8 ];\n\t\tS2 = sh[ 7 ];\n\t\tS3 = sh[ 6 ];\n\t\tS4 = sh[ 5 ];\n\t\tS5 = sh[ 4 ];\n\t\tS6 = sh[ 3 ];\n\t\tS7 = sh[ 2 ];\n\t\tS8 = sh[ 1 ];\n\t\tS9 = sh[ 0 ];\n\t\tdx0 = sx[ 9 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 8 ] - ( S0*sx[9] );\n\t\tdx2 = sx[ 7 ] - ( S1*sx[8] );\n\t\tdx3 = sx[ 6 ] - ( S2*sx[7] );\n\t\tdx4 = sx[ 5 ] - ( S3*sx[6] );\n\t\tdx5 = sx[ 4 ] - ( S4*sx[5] );\n\t\tdx6 = sx[ 3 ] - ( S5*sx[4] );\n\t\tdx7 = sx[ 2 ] - ( S6*sx[3] );\n\t\tdx8 = sx[ 1 ] - ( S7*sx[2] );\n\t\tdx9 = sx[ 0 ] - ( S8*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 2 ];\n\t\tS3 = sh[ 3 ];\n\t\tS4 = sh[ 4 ];\n\t\tS5 = sh[ 5 ];\n\t\tS6 = sh[ 6 ];\n\t\tS7 = sh[ 7 ];\n\t\tS8 = sh[ 8 ];\n\t\tS9 = sh[ 9 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[1] );\n\t\tdx3 = sx[ 3 ] - ( S2*sx[2] );\n\t\tdx4 = sx[ 4 ] - ( S3*sx[3] );\n\t\tdx5 = sx[ 5 ] - ( S4*sx[4] );\n\t\tdx6 = sx[ 6 ] - ( S5*sx[5] );\n\t\tdx7 = sx[ 7 ] - ( S6*sx[6] );\n\t\tdx8 = sx[ 8 ] - ( S7*sx[7] );\n\t\tdx9 = sx[ 9 ] - ( S8*sx[8] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache accessor:\n\tget = x.accessors[ 0 ];\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i9 = 0; i9 < S9; i9++ ) {\n\t\tfor ( i8 = 0; i8 < S8; i8++ ) {\n\t\t\tfor ( i7 = 0; i7 < S7; i7++ ) {\n\t\t\t\tfor ( i6 = 0; i6 < S6; i6++ ) {\n\t\t\t\t\tfor ( i5 = 0; i5 < S5; i5++ ) {\n\t\t\t\t\t\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\t\t\t\t\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\t\t\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\t\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\t\t\t\t\t\tif ( get( xbuf, ix ) === value ) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tix += dx1;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tix += dx2;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tix += dx3;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tix += dx4;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tix += dx5;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx6;\n\t\t\t\t}\n\t\t\t\tix += dx7;\n\t\t\t}\n\t\t\tix += dx8;\n\t\t}\n\t\tix += dx9;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default includes10d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Tests whether a reinterpreted complex number ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {ComplexLike} value - search element\n* @returns {boolean} result\n*\n* @example\n* import Float64Array from '@stdlib/array-float64';\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [];\n*\n* // Define the array strides:\n* var sx = [ 0 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'complex128',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var v = {\n* 're': 1.0,\n* 'im': 2.0\n* };\n* var out = includes0d( x, v );\n* // returns true\n*\n* v = {\n* 're': -3.0,\n* 'im': -4.0\n* };\n* out = includes0d( x, v );\n* // returns false\n*/\nfunction includes0d( x, value ) {\n\treturn ( x.data[ x.offset ] === value.re && x.data[ x.offset+1 ] === value.im ); // eslint-disable-line max-len\n}\n\n\n// EXPORTS //\n\nexport default includes0d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Tests whether a reinterpreted complex number ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {ComplexLike} value - search element\n* @returns {boolean} result\n*\n* @example\n* import Float64Array from '@stdlib/array-float64';\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 4 ];\n*\n* // Define the array strides:\n* var sx = [ 2 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'complex128',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var v = {\n* 're': 3.0,\n* 'im': 4.0\n* };\n* var out = includes1d( x, v );\n* // returns true\n*\n* v = {\n* 're': -3.0,\n* 'im': -4.0\n* };\n* out = includes1d( x, v );\n* // returns false\n*/\nfunction includes1d( x, value ) {\n\tvar xbuf;\n\tvar dx0;\n\tvar S0;\n\tvar ix;\n\tvar i0;\n\n\t// Note on variable naming convention: S#, dx#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables: dimensions and loop offset (pointer) increments:\n\tS0 = x.shape[ 0 ];\n\tdx0 = x.strides[ 0 ];\n\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\tif ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) {\n\t\t\treturn true;\n\t\t}\n\t\tix += dx0;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default includes1d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nimport strides2order from '@stdlib/ndarray-base-strides2order';\n\n\n// MAIN //\n\n/**\n* Tests whether a reinterpreted complex number ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {ComplexLike} value - search element\n* @returns {boolean} result\n*\n* @example\n* import Float64Array from '@stdlib/array-float64';\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 4, 2 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'complex128',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var v = {\n* 're': 3.0,\n* 'im': 4.0\n* };\n* var out = includes2d( x, v );\n* // returns true\n*\n* v = {\n* 're': -3.0,\n* 'im': -4.0\n* };\n* out = includes2d( x, v );\n* // returns false\n*/\nfunction includes2d( x, value ) {\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 1 ];\n\t\tS1 = sh[ 0 ];\n\t\tdx0 = sx[ 1 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 0 ] - ( S0*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tif ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tix += dx0;\n\t\t}\n\t\tix += dx1;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default includes2d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nimport strides2order from '@stdlib/ndarray-base-strides2order';\n\n\n// MAIN //\n\n/**\n* Tests whether a reinterpreted complex number ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {ComplexLike} value - search element\n* @returns {boolean} result\n*\n* @example\n* import Float64Array from '@stdlib/array-float64';\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 4, 2 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'complex128',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var v = {\n* 're': 3.0,\n* 'im': 4.0\n* };\n* var out = includes3d( x, v );\n* // returns true\n*\n* v = {\n* 're': -3.0,\n* 'im': -4.0\n* };\n* out = includes3d( x, v );\n* // returns false\n*/\nfunction includes3d( x, value ) {\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 2 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 0 ];\n\t\tdx0 = sx[ 2 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[2] );\n\t\tdx2 = sx[ 0 ] - ( S1*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 2 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[1] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\tif ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tix += dx0;\n\t\t\t}\n\t\t\tix += dx1;\n\t\t}\n\t\tix += dx2;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default includes3d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-len */\n\n'use strict';\n\n// MODULES //\n\nimport strides2order from '@stdlib/ndarray-base-strides2order';\n\n\n// MAIN //\n\n/**\n* Tests whether a reinterpreted complex number ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {ComplexLike} value - search element\n* @returns {boolean} result\n*\n* @example\n* import Float64Array from '@stdlib/array-float64';\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 4, 2 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'complex128',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var v = {\n* 're': 3.0,\n* 'im': 4.0\n* };\n* var out = includes4d( x, v );\n* // returns true\n*\n* v = {\n* 're': -3.0,\n* 'im': -4.0\n* };\n* out = includes4d( x, v );\n* // returns false\n*/\nfunction includes4d( x, value ) {\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 3 ];\n\t\tS1 = sh[ 2 ];\n\t\tS2 = sh[ 1 ];\n\t\tS3 = sh[ 0 ];\n\t\tdx0 = sx[ 3 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 2 ] - ( S0*sx[3] );\n\t\tdx2 = sx[ 1 ] - ( S1*sx[2] );\n\t\tdx3 = sx[ 0 ] - ( S2*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 2 ];\n\t\tS3 = sh[ 3 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[1] );\n\t\tdx3 = sx[ 3 ] - ( S2*sx[2] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\tif ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx0;\n\t\t\t\t}\n\t\t\t\tix += dx1;\n\t\t\t}\n\t\t\tix += dx2;\n\t\t}\n\t\tix += dx3;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default includes4d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MODULES //\n\nimport strides2order from '@stdlib/ndarray-base-strides2order';\n\n\n// MAIN //\n\n/**\n* Tests whether a reinterpreted complex number ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {ComplexLike} value - search element\n* @returns {boolean} result\n*\n* @example\n* import Float64Array from '@stdlib/array-float64';\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 8, 4, 2 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'complex128',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var v = {\n* 're': 3.0,\n* 'im': 4.0\n* };\n* var out = includes5d( x, v );\n* // returns true\n*\n* v = {\n* 're': -3.0,\n* 'im': -4.0\n* };\n* out = includes5d( x, v );\n* // returns false\n*/\nfunction includes5d( x, value ) {\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 4 ];\n\t\tS1 = sh[ 3 ];\n\t\tS2 = sh[ 2 ];\n\t\tS3 = sh[ 1 ];\n\t\tS4 = sh[ 0 ];\n\t\tdx0 = sx[ 4 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 3 ] - ( S0*sx[4] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[3] );\n\t\tdx3 = sx[ 1 ] - ( S2*sx[2] );\n\t\tdx4 = sx[ 0 ] - ( S3*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 2 ];\n\t\tS3 = sh[ 3 ];\n\t\tS4 = sh[ 4 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[1] );\n\t\tdx3 = sx[ 3 ] - ( S2*sx[2] );\n\t\tdx4 = sx[ 4 ] - ( S3*sx[3] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\tif ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx1;\n\t\t\t\t}\n\t\t\t\tix += dx2;\n\t\t\t}\n\t\t\tix += dx3;\n\t\t}\n\t\tix += dx4;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default includes5d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MODULES //\n\nimport strides2order from '@stdlib/ndarray-base-strides2order';\n\n\n// MAIN //\n\n/**\n* Tests whether a reinterpreted complex number ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {ComplexLike} value - search element\n* @returns {boolean} result\n*\n* @example\n* import Float64Array from '@stdlib/array-float64';\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 8, 8, 4, 2 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'complex128',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var v = {\n* 're': 3.0,\n* 'im': 4.0\n* };\n* var out = includes6d( x, v );\n* // returns true\n*\n* v = {\n* 're': -3.0,\n* 'im': -4.0\n* };\n* out = includes6d( x, v );\n* // returns false\n*/\nfunction includes6d( x, value ) {\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar S5;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 5 ];\n\t\tS1 = sh[ 4 ];\n\t\tS2 = sh[ 3 ];\n\t\tS3 = sh[ 2 ];\n\t\tS4 = sh[ 1 ];\n\t\tS5 = sh[ 0 ];\n\t\tdx0 = sx[ 5 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 4 ] - ( S0*sx[5] );\n\t\tdx2 = sx[ 3 ] - ( S1*sx[4] );\n\t\tdx3 = sx[ 2 ] - ( S2*sx[3] );\n\t\tdx4 = sx[ 1 ] - ( S3*sx[2] );\n\t\tdx5 = sx[ 0 ] - ( S4*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 2 ];\n\t\tS3 = sh[ 3 ];\n\t\tS4 = sh[ 4 ];\n\t\tS5 = sh[ 5 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[1] );\n\t\tdx3 = sx[ 3 ] - ( S2*sx[2] );\n\t\tdx4 = sx[ 4 ] - ( S3*sx[3] );\n\t\tdx5 = sx[ 5 ] - ( S4*sx[4] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i5 = 0; i5 < S5; i5++ ) {\n\t\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\t\tif ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tix += dx1;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx2;\n\t\t\t\t}\n\t\t\t\tix += dx3;\n\t\t\t}\n\t\t\tix += dx4;\n\t\t}\n\t\tix += dx5;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default includes6d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MODULES //\n\nimport strides2order from '@stdlib/ndarray-base-strides2order';\n\n\n// MAIN //\n\n/**\n* Tests whether a reinterpreted complex number ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {ComplexLike} value - search element\n* @returns {boolean} result\n*\n* @example\n* import Float64Array from '@stdlib/array-float64';\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 8, 8, 8, 4, 2 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'complex128',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var v = {\n* 're': 3.0,\n* 'im': 4.0\n* };\n* var out = includes7d( x, v );\n* // returns true\n*\n* v = {\n* 're': -3.0,\n* 'im': -4.0\n* };\n* out = includes7d( x, v );\n* // returns false\n*/\nfunction includes7d( x, value ) {\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar dx6;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar S5;\n\tvar S6;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar i6;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 6 ];\n\t\tS1 = sh[ 5 ];\n\t\tS2 = sh[ 4 ];\n\t\tS3 = sh[ 3 ];\n\t\tS4 = sh[ 2 ];\n\t\tS5 = sh[ 1 ];\n\t\tS6 = sh[ 0 ];\n\t\tdx0 = sx[ 6 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 5 ] - ( S0*sx[6] );\n\t\tdx2 = sx[ 4 ] - ( S1*sx[5] );\n\t\tdx3 = sx[ 3 ] - ( S2*sx[4] );\n\t\tdx4 = sx[ 2 ] - ( S3*sx[3] );\n\t\tdx5 = sx[ 1 ] - ( S4*sx[2] );\n\t\tdx6 = sx[ 0 ] - ( S5*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 2 ];\n\t\tS3 = sh[ 3 ];\n\t\tS4 = sh[ 4 ];\n\t\tS5 = sh[ 5 ];\n\t\tS6 = sh[ 6 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[1] );\n\t\tdx3 = sx[ 3 ] - ( S2*sx[2] );\n\t\tdx4 = sx[ 4 ] - ( S3*sx[3] );\n\t\tdx5 = sx[ 5 ] - ( S4*sx[4] );\n\t\tdx6 = sx[ 6 ] - ( S5*sx[5] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i6 = 0; i6 < S6; i6++ ) {\n\t\tfor ( i5 = 0; i5 < S5; i5++ ) {\n\t\t\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\t\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\t\t\tif ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) {\n\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tix += dx1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tix += dx2;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx3;\n\t\t\t\t}\n\t\t\t\tix += dx4;\n\t\t\t}\n\t\t\tix += dx5;\n\t\t}\n\t\tix += dx6;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default includes7d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MODULES //\n\nimport strides2order from '@stdlib/ndarray-base-strides2order';\n\n\n// MAIN //\n\n/**\n* Tests whether a reinterpreted complex number ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {ComplexLike} value - search element\n* @returns {boolean} result\n*\n* @example\n* import Float64Array from '@stdlib/array-float64';\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 8, 8, 8, 8, 4, 2 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'complex128',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var v = {\n* 're': 3.0,\n* 'im': 4.0\n* };\n* var out = includes8d( x, v );\n* // returns true\n*\n* v = {\n* 're': -3.0,\n* 'im': -4.0\n* };\n* out = includes8d( x, v );\n* // returns false\n*/\nfunction includes8d( x, value ) {\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar dx6;\n\tvar dx7;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar S5;\n\tvar S6;\n\tvar S7;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar i6;\n\tvar i7;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 7 ];\n\t\tS1 = sh[ 6 ];\n\t\tS2 = sh[ 5 ];\n\t\tS3 = sh[ 4 ];\n\t\tS4 = sh[ 3 ];\n\t\tS5 = sh[ 2 ];\n\t\tS6 = sh[ 1 ];\n\t\tS7 = sh[ 0 ];\n\t\tdx0 = sx[ 7 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 6 ] - ( S0*sx[7] );\n\t\tdx2 = sx[ 5 ] - ( S1*sx[6] );\n\t\tdx3 = sx[ 4 ] - ( S2*sx[5] );\n\t\tdx4 = sx[ 3 ] - ( S3*sx[4] );\n\t\tdx5 = sx[ 2 ] - ( S4*sx[3] );\n\t\tdx6 = sx[ 1 ] - ( S5*sx[2] );\n\t\tdx7 = sx[ 0 ] - ( S6*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 2 ];\n\t\tS3 = sh[ 3 ];\n\t\tS4 = sh[ 4 ];\n\t\tS5 = sh[ 5 ];\n\t\tS6 = sh[ 6 ];\n\t\tS7 = sh[ 7 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[1] );\n\t\tdx3 = sx[ 3 ] - ( S2*sx[2] );\n\t\tdx4 = sx[ 4 ] - ( S3*sx[3] );\n\t\tdx5 = sx[ 5 ] - ( S4*sx[4] );\n\t\tdx6 = sx[ 6 ] - ( S5*sx[5] );\n\t\tdx7 = sx[ 7 ] - ( S6*sx[6] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i7 = 0; i7 < S7; i7++ ) {\n\t\tfor ( i6 = 0; i6 < S6; i6++ ) {\n\t\t\tfor ( i5 = 0; i5 < S5; i5++ ) {\n\t\t\t\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\t\t\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\t\t\t\tif ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) {\n\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tix += dx1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tix += dx2;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tix += dx3;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx4;\n\t\t\t\t}\n\t\t\t\tix += dx5;\n\t\t\t}\n\t\t\tix += dx6;\n\t\t}\n\t\tix += dx7;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default includes8d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MODULES //\n\nimport strides2order from '@stdlib/ndarray-base-strides2order';\n\n\n// MAIN //\n\n/**\n* Tests whether a reinterpreted complex number ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {ComplexLike} value - search element\n* @returns {boolean} result\n*\n* @example\n* import Float64Array from '@stdlib/array-float64';\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 1, 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 8, 8, 8, 8, 8, 4, 2 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'complex128',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var v = {\n* 're': 3.0,\n* 'im': 4.0\n* };\n* var out = includes9d( x, v );\n* // returns true\n*\n* v = {\n* 're': -3.0,\n* 'im': -4.0\n* };\n* out = includes9d( x, v );\n* // returns false\n*/\nfunction includes9d( x, value ) {\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar dx6;\n\tvar dx7;\n\tvar dx8;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar S5;\n\tvar S6;\n\tvar S7;\n\tvar S8;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar i6;\n\tvar i7;\n\tvar i8;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 8 ];\n\t\tS1 = sh[ 7 ];\n\t\tS2 = sh[ 6 ];\n\t\tS3 = sh[ 5 ];\n\t\tS4 = sh[ 4 ];\n\t\tS5 = sh[ 3 ];\n\t\tS6 = sh[ 2 ];\n\t\tS7 = sh[ 1 ];\n\t\tS8 = sh[ 0 ];\n\t\tdx0 = sx[ 8 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 7 ] - ( S0*sx[8] );\n\t\tdx2 = sx[ 6 ] - ( S1*sx[7] );\n\t\tdx3 = sx[ 5 ] - ( S2*sx[6] );\n\t\tdx4 = sx[ 4 ] - ( S3*sx[5] );\n\t\tdx5 = sx[ 3 ] - ( S4*sx[4] );\n\t\tdx6 = sx[ 2 ] - ( S5*sx[3] );\n\t\tdx7 = sx[ 1 ] - ( S6*sx[2] );\n\t\tdx8 = sx[ 0 ] - ( S7*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 2 ];\n\t\tS3 = sh[ 3 ];\n\t\tS4 = sh[ 4 ];\n\t\tS5 = sh[ 5 ];\n\t\tS6 = sh[ 6 ];\n\t\tS7 = sh[ 7 ];\n\t\tS8 = sh[ 8 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[1] );\n\t\tdx3 = sx[ 3 ] - ( S2*sx[2] );\n\t\tdx4 = sx[ 4 ] - ( S3*sx[3] );\n\t\tdx5 = sx[ 5 ] - ( S4*sx[4] );\n\t\tdx6 = sx[ 6 ] - ( S5*sx[5] );\n\t\tdx7 = sx[ 7 ] - ( S6*sx[6] );\n\t\tdx8 = sx[ 8 ] - ( S7*sx[7] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i8 = 0; i8 < S8; i8++ ) {\n\t\tfor ( i7 = 0; i7 < S7; i7++ ) {\n\t\t\tfor ( i6 = 0; i6 < S6; i6++ ) {\n\t\t\t\tfor ( i5 = 0; i5 < S5; i5++ ) {\n\t\t\t\t\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\t\t\t\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\t\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\t\t\t\t\tif ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) {\n\t\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tix += dx1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tix += dx2;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tix += dx3;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tix += dx4;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx5;\n\t\t\t\t}\n\t\t\t\tix += dx6;\n\t\t\t}\n\t\t\tix += dx7;\n\t\t}\n\t\tix += dx8;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default includes9d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MODULES //\n\nimport strides2order from '@stdlib/ndarray-base-strides2order';\n\n\n// MAIN //\n\n/**\n* Tests whether a reinterpreted complex number ndarray contains a specified value.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {ComplexLike} value - search element\n* @returns {boolean} result\n*\n* @example\n* import Float64Array from '@stdlib/array-float64';\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 1, 1, 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 8, 8, 8, 8, 8, 8, 4, 2 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'complex128',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var v = {\n* 're': 3.0,\n* 'im': 4.0\n* };\n* var out = includes10d( x, v );\n* // returns true\n*\n* v = {\n* 're': -3.0,\n* 'im': -4.0\n* };\n* out = includes10d( x, v );\n* // returns false\n*/\nfunction includes10d( x, value ) { // eslint-disable-line max-statements\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar dx6;\n\tvar dx7;\n\tvar dx8;\n\tvar dx9;\n\tvar sh;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar S5;\n\tvar S6;\n\tvar S7;\n\tvar S8;\n\tvar S9;\n\tvar sx;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar i6;\n\tvar i7;\n\tvar i8;\n\tvar i9;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest changing indices...\n\t\tS0 = sh[ 9 ];\n\t\tS1 = sh[ 8 ];\n\t\tS2 = sh[ 7 ];\n\t\tS3 = sh[ 6 ];\n\t\tS4 = sh[ 5 ];\n\t\tS5 = sh[ 4 ];\n\t\tS6 = sh[ 3 ];\n\t\tS7 = sh[ 2 ];\n\t\tS8 = sh[ 1 ];\n\t\tS9 = sh[ 0 ];\n\t\tdx0 = sx[ 9 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 8 ] - ( S0*sx[9] );\n\t\tdx2 = sx[ 7 ] - ( S1*sx[8] );\n\t\tdx3 = sx[ 6 ] - ( S2*sx[7] );\n\t\tdx4 = sx[ 5 ] - ( S3*sx[6] );\n\t\tdx5 = sx[ 4 ] - ( S4*sx[5] );\n\t\tdx6 = sx[ 3 ] - ( S5*sx[4] );\n\t\tdx7 = sx[ 2 ] - ( S6*sx[3] );\n\t\tdx8 = sx[ 1 ] - ( S7*sx[2] );\n\t\tdx9 = sx[ 0 ] - ( S8*sx[1] ); // offset increment for outermost loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays, the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 2 ];\n\t\tS3 = sh[ 3 ];\n\t\tS4 = sh[ 4 ];\n\t\tS5 = sh[ 5 ];\n\t\tS6 = sh[ 6 ];\n\t\tS7 = sh[ 7 ];\n\t\tS8 = sh[ 8 ];\n\t\tS9 = sh[ 9 ];\n\t\tdx0 = sx[ 0 ]; // offset increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] );\n\t\tdx2 = sx[ 2 ] - ( S1*sx[1] );\n\t\tdx3 = sx[ 3 ] - ( S2*sx[2] );\n\t\tdx4 = sx[ 4 ] - ( S3*sx[3] );\n\t\tdx5 = sx[ 5 ] - ( S4*sx[4] );\n\t\tdx6 = sx[ 6 ] - ( S5*sx[5] );\n\t\tdx7 = sx[ 7 ] - ( S6*sx[6] );\n\t\tdx8 = sx[ 8 ] - ( S7*sx[7] );\n\t\tdx9 = sx[ 9 ] - ( S8*sx[8] ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Iterate over the ndarray dimensions...\n\tfor ( i9 = 0; i9 < S9; i9++ ) {\n\t\tfor ( i8 = 0; i8 < S8; i8++ ) {\n\t\t\tfor ( i7 = 0; i7 < S7; i7++ ) {\n\t\t\t\tfor ( i6 = 0; i6 < S6; i6++ ) {\n\t\t\t\t\tfor ( i5 = 0; i5 < S5; i5++ ) {\n\t\t\t\t\t\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\t\t\t\t\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\t\t\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\t\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\t\t\t\t\t\tif ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tix += dx1;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tix += dx2;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tix += dx3;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tix += dx4;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tix += dx5;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx6;\n\t\t\t\t}\n\t\t\t\tix += dx7;\n\t\t\t}\n\t\t\tix += dx8;\n\t\t}\n\t\tix += dx9;\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default includes10d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nimport loopOrder from '@stdlib/ndarray-base-nullary-loop-interchange-order';\nimport blockSize from '@stdlib/ndarray-base-nullary-tiling-block-size';\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* import Float64Array from '@stdlib/array-float64';\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'float64',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var out = blockedincludes2d( x, 6.0 );\n* // returns true\n*\n* out = blockedincludes2d( x, 100.0 );\n* // returns false\n*/\nfunction blockedincludes2d( x, value ) {\n\tvar bsize;\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar ox1;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar j0;\n\tvar j1;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Iterate over blocks...\n\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\tif ( j1 < bsize ) {\n\t\t\ts1 = j1;\n\t\t\tj1 = 0;\n\t\t} else {\n\t\t\ts1 = bsize;\n\t\t\tj1 -= bsize;\n\t\t}\n\t\tox1 = ox + ( j1*sx[1] );\n\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\tif ( j0 < bsize ) {\n\t\t\t\ts0 = j0;\n\t\t\t\tj0 = 0;\n\t\t\t} else {\n\t\t\t\ts0 = bsize;\n\t\t\t\tj0 -= bsize;\n\t\t\t}\n\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t// Compute the loop offset increment:\n\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t// Iterate over the ndarray dimensions...\n\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\tif ( xbuf[ ix ] === value ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx0;\n\t\t\t\t}\n\t\t\t\tix += dx1;\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default blockedincludes2d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth */\n\n'use strict';\n\n// MODULES //\n\nimport loopOrder from '@stdlib/ndarray-base-nullary-loop-interchange-order';\nimport blockSize from '@stdlib/ndarray-base-nullary-tiling-block-size';\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* import Float64Array from '@stdlib/array-float64';\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 3, 1, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 4, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'float64',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var out = blockedincludes3d( x, 6.0 );\n* // returns true\n*\n* out = blockedincludes3d( x, 100.0 );\n* // returns false\n*/\nfunction blockedincludes3d( x, value ) {\n\tvar bsize;\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar ox1;\n\tvar ox2;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar s2;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Iterate over blocks...\n\tfor ( j2 = sh[2]; j2 > 0; ) {\n\t\tif ( j2 < bsize ) {\n\t\t\ts2 = j2;\n\t\t\tj2 = 0;\n\t\t} else {\n\t\t\ts2 = bsize;\n\t\t\tj2 -= bsize;\n\t\t}\n\t\tox2 = ox + ( j2*sx[2] );\n\t\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\t\tif ( j1 < bsize ) {\n\t\t\t\ts1 = j1;\n\t\t\t\tj1 = 0;\n\t\t\t} else {\n\t\t\t\ts1 = bsize;\n\t\t\t\tj1 -= bsize;\n\t\t\t}\n\t\t\tdx2 = sx[2] - ( s1*sx[1] );\n\t\t\tox1 = ox2 + ( j1*sx[1] );\n\t\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\t\tif ( j0 < bsize ) {\n\t\t\t\t\ts0 = j0;\n\t\t\t\t\tj0 = 0;\n\t\t\t\t} else {\n\t\t\t\t\ts0 = bsize;\n\t\t\t\t\tj0 -= bsize;\n\t\t\t\t}\n\t\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t\t// Compute the loop offset increment:\n\t\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t\t// Iterate over the ndarray dimensions...\n\t\t\t\tfor ( i2 = 0; i2 < s2; i2++ ) {\n\t\t\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\t\t\tif ( xbuf[ ix ] === value ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tix += dx1;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx2;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default blockedincludes3d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth */\n\n'use strict';\n\n// MODULES //\n\nimport loopOrder from '@stdlib/ndarray-base-nullary-loop-interchange-order';\nimport blockSize from '@stdlib/ndarray-base-nullary-tiling-block-size';\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* import Float64Array from '@stdlib/array-float64';\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 3, 1, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 12, 4, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'float64',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var out = blockedincludes4d( x, 6.0 );\n* // returns true\n*\n* out = blockedincludes4d( x, 100.0 );\n* // returns false\n*/\nfunction blockedincludes4d( x, value ) {\n\tvar bsize;\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar ox1;\n\tvar ox2;\n\tvar ox3;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar s2;\n\tvar s3;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar j3;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Iterate over blocks...\n\tfor ( j3 = sh[3]; j3 > 0; ) {\n\t\tif ( j3 < bsize ) {\n\t\t\ts3 = j3;\n\t\t\tj3 = 0;\n\t\t} else {\n\t\t\ts3 = bsize;\n\t\t\tj3 -= bsize;\n\t\t}\n\t\tox3 = ox + ( j3*sx[3] );\n\t\tfor ( j2 = sh[2]; j2 > 0; ) {\n\t\t\tif ( j2 < bsize ) {\n\t\t\t\ts2 = j2;\n\t\t\t\tj2 = 0;\n\t\t\t} else {\n\t\t\t\ts2 = bsize;\n\t\t\t\tj2 -= bsize;\n\t\t\t}\n\t\t\tdx3 = sx[3] - ( s2*sx[2] );\n\t\t\tox2 = ox3 + ( j2*sx[2] );\n\t\t\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\t\t\tif ( j1 < bsize ) {\n\t\t\t\t\ts1 = j1;\n\t\t\t\t\tj1 = 0;\n\t\t\t\t} else {\n\t\t\t\t\ts1 = bsize;\n\t\t\t\t\tj1 -= bsize;\n\t\t\t\t}\n\t\t\t\tdx2 = sx[2] - ( s1*sx[1] );\n\t\t\t\tox1 = ox2 + ( j1*sx[1] );\n\t\t\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\t\t\tif ( j0 < bsize ) {\n\t\t\t\t\t\ts0 = j0;\n\t\t\t\t\t\tj0 = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts0 = bsize;\n\t\t\t\t\t\tj0 -= bsize;\n\t\t\t\t\t}\n\t\t\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t\t\t// Compute the loop offset increment:\n\t\t\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t\t\t// Iterate over the ndarray dimensions...\n\t\t\t\t\tfor ( i3 = 0; i3 < s3; i3++ ) {\n\t\t\t\t\t\tfor ( i2 = 0; i2 < s2; i2++ ) {\n\t\t\t\t\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\t\t\t\t\tif ( xbuf[ ix ] === value ) {\n\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tix += dx1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tix += dx2;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tix += dx3;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default blockedincludes4d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth */\n\n'use strict';\n\n// MODULES //\n\nimport loopOrder from '@stdlib/ndarray-base-nullary-loop-interchange-order';\nimport blockSize from '@stdlib/ndarray-base-nullary-tiling-block-size';\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* import Float64Array from '@stdlib/array-float64';\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 3, 1, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 12, 12, 4, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'float64',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var out = blockedincludes5d( x, 6.0 );\n* // returns true\n*\n* out = blockedincludes5d( x, 100.0 );\n* // returns false\n*/\nfunction blockedincludes5d( x, value ) {\n\tvar bsize;\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar ox1;\n\tvar ox2;\n\tvar ox3;\n\tvar ox4;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar s2;\n\tvar s3;\n\tvar s4;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar j3;\n\tvar j4;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Iterate over blocks...\n\tfor ( j4 = sh[4]; j4 > 0; ) {\n\t\tif ( j4 < bsize ) {\n\t\t\ts4 = j4;\n\t\t\tj4 = 0;\n\t\t} else {\n\t\t\ts4 = bsize;\n\t\t\tj4 -= bsize;\n\t\t}\n\t\tox4 = ox + ( j4*sx[4] );\n\t\tfor ( j3 = sh[3]; j3 > 0; ) {\n\t\t\tif ( j3 < bsize ) {\n\t\t\t\ts3 = j3;\n\t\t\t\tj3 = 0;\n\t\t\t} else {\n\t\t\t\ts3 = bsize;\n\t\t\t\tj3 -= bsize;\n\t\t\t}\n\t\t\tdx4 = sx[4] - ( s3*sx[3] );\n\t\t\tox3 = ox4 + ( j3*sx[3] );\n\t\t\tfor ( j2 = sh[2]; j2 > 0; ) {\n\t\t\t\tif ( j2 < bsize ) {\n\t\t\t\t\ts2 = j2;\n\t\t\t\t\tj2 = 0;\n\t\t\t\t} else {\n\t\t\t\t\ts2 = bsize;\n\t\t\t\t\tj2 -= bsize;\n\t\t\t\t}\n\t\t\t\tdx3 = sx[3] - ( s2*sx[2] );\n\t\t\t\tox2 = ox3 + ( j2*sx[2] );\n\t\t\t\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\t\t\t\tif ( j1 < bsize ) {\n\t\t\t\t\t\ts1 = j1;\n\t\t\t\t\t\tj1 = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts1 = bsize;\n\t\t\t\t\t\tj1 -= bsize;\n\t\t\t\t\t}\n\t\t\t\t\tdx2 = sx[2] - ( s1*sx[1] );\n\t\t\t\t\tox1 = ox2 + ( j1*sx[1] );\n\t\t\t\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\t\t\t\tif ( j0 < bsize ) {\n\t\t\t\t\t\t\ts0 = j0;\n\t\t\t\t\t\t\tj0 = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ts0 = bsize;\n\t\t\t\t\t\t\tj0 -= bsize;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\t\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t\t\t\t// Compute the loop offset increment:\n\t\t\t\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t\t\t\t// Iterate over the ndarray dimensions...\n\t\t\t\t\t\tfor ( i4 = 0; i4 < s4; i4++ ) {\n\t\t\t\t\t\t\tfor ( i3 = 0; i3 < s3; i3++ ) {\n\t\t\t\t\t\t\t\tfor ( i2 = 0; i2 < s2; i2++ ) {\n\t\t\t\t\t\t\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\t\t\t\t\t\t\tif ( xbuf[ ix ] === value ) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tix += dx1;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tix += dx2;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tix += dx3;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tix += dx4;\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\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default blockedincludes5d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MODULES //\n\nimport loopOrder from '@stdlib/ndarray-base-nullary-loop-interchange-order';\nimport blockSize from '@stdlib/ndarray-base-nullary-tiling-block-size';\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* import Float64Array from '@stdlib/array-float64';\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 3, 1, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 12, 12, 12, 4, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'float64',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var out = blockedincludes6d( x, 6.0 );\n* // returns true\n*\n* out = blockedincludes6d( x, 100.0 );\n* // returns false\n*/\nfunction blockedincludes6d( x, value ) { // eslint-disable-line max-statements\n\tvar bsize;\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar ox1;\n\tvar ox2;\n\tvar ox3;\n\tvar ox4;\n\tvar ox5;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar s2;\n\tvar s3;\n\tvar s4;\n\tvar s5;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar j3;\n\tvar j4;\n\tvar j5;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Iterate over blocks...\n\tfor ( j5 = sh[5]; j5 > 0; ) {\n\t\tif ( j5 < bsize ) {\n\t\t\ts5 = j5;\n\t\t\tj5 = 0;\n\t\t} else {\n\t\t\ts5 = bsize;\n\t\t\tj5 -= bsize;\n\t\t}\n\t\tox5 = ox + ( j5*sx[5] );\n\t\tfor ( j4 = sh[4]; j4 > 0; ) {\n\t\t\tif ( j4 < bsize ) {\n\t\t\t\ts4 = j4;\n\t\t\t\tj4 = 0;\n\t\t\t} else {\n\t\t\t\ts4 = bsize;\n\t\t\t\tj4 -= bsize;\n\t\t\t}\n\t\t\tdx5 = sx[5] - ( s4*sx[4] );\n\t\t\tox4 = ox5 + ( j4*sx[4] );\n\t\t\tfor ( j3 = sh[3]; j3 > 0; ) {\n\t\t\t\tif ( j3 < bsize ) {\n\t\t\t\t\ts3 = j3;\n\t\t\t\t\tj3 = 0;\n\t\t\t\t} else {\n\t\t\t\t\ts3 = bsize;\n\t\t\t\t\tj3 -= bsize;\n\t\t\t\t}\n\t\t\t\tdx4 = sx[4] - ( s3*sx[3] );\n\t\t\t\tox3 = ox4 + ( j3*sx[3] );\n\t\t\t\tfor ( j2 = sh[2]; j2 > 0; ) {\n\t\t\t\t\tif ( j2 < bsize ) {\n\t\t\t\t\t\ts2 = j2;\n\t\t\t\t\t\tj2 = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts2 = bsize;\n\t\t\t\t\t\tj2 -= bsize;\n\t\t\t\t\t}\n\t\t\t\t\tdx3 = sx[3] - ( s2*sx[2] );\n\t\t\t\t\tox2 = ox3 + ( j2*sx[2] );\n\t\t\t\t\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\t\t\t\t\tif ( j1 < bsize ) {\n\t\t\t\t\t\t\ts1 = j1;\n\t\t\t\t\t\t\tj1 = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ts1 = bsize;\n\t\t\t\t\t\t\tj1 -= bsize;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdx2 = sx[2] - ( s1*sx[1] );\n\t\t\t\t\t\tox1 = ox2 + ( j1*sx[1] );\n\t\t\t\t\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\t\t\t\t\tif ( j0 < bsize ) {\n\t\t\t\t\t\t\t\ts0 = j0;\n\t\t\t\t\t\t\t\tj0 = 0;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ts0 = bsize;\n\t\t\t\t\t\t\t\tj0 -= bsize;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\t\t\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t\t\t\t\t// Compute the loop offset increment:\n\t\t\t\t\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t\t\t\t\t// Iterate over the ndarray dimensions...\n\t\t\t\t\t\t\tfor ( i5 = 0; i5 < s5; i5++ ) {\n\t\t\t\t\t\t\t\tfor ( i4 = 0; i4 < s4; i4++ ) {\n\t\t\t\t\t\t\t\t\tfor ( i3 = 0; i3 < s3; i3++ ) {\n\t\t\t\t\t\t\t\t\t\tfor ( i2 = 0; i2 < s2; i2++ ) {\n\t\t\t\t\t\t\t\t\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tif ( xbuf[ ix ] === value ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn true;\n\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\tix += dx0;\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\tix += dx1;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tix += dx2;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tix += dx3;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tix += dx4;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tix += dx5;\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}\n\t\t}\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default blockedincludes6d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MODULES //\n\nimport loopOrder from '@stdlib/ndarray-base-nullary-loop-interchange-order';\nimport blockSize from '@stdlib/ndarray-base-nullary-tiling-block-size';\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* import Float64Array from '@stdlib/array-float64';\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 3, 1, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 12, 12, 12, 12, 4, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'float64',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var out = blockedincludes7d( x, 6.0 );\n* // returns true\n*\n* out = blockedincludes7d( x, 100.0 );\n* // returns false\n*/\nfunction blockedincludes7d( x, value ) { // eslint-disable-line max-statements\n\tvar bsize;\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar dx6;\n\tvar ox1;\n\tvar ox2;\n\tvar ox3;\n\tvar ox4;\n\tvar ox5;\n\tvar ox6;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar s2;\n\tvar s3;\n\tvar s4;\n\tvar s5;\n\tvar s6;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar i6;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar j3;\n\tvar j4;\n\tvar j5;\n\tvar j6;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Iterate over blocks...\n\tfor ( j6 = sh[6]; j6 > 0; ) {\n\t\tif ( j6 < bsize ) {\n\t\t\ts6 = j6;\n\t\t\tj6 = 0;\n\t\t} else {\n\t\t\ts6 = bsize;\n\t\t\tj6 -= bsize;\n\t\t}\n\t\tox6 = ox + ( j6*sx[6] );\n\t\tfor ( j5 = sh[5]; j5 > 0; ) {\n\t\t\tif ( j5 < bsize ) {\n\t\t\t\ts5 = j5;\n\t\t\t\tj5 = 0;\n\t\t\t} else {\n\t\t\t\ts5 = bsize;\n\t\t\t\tj5 -= bsize;\n\t\t\t}\n\t\t\tdx6 = sx[6] - ( s5*sx[5] );\n\t\t\tox5 = ox6 + ( j5*sx[5] );\n\t\t\tfor ( j4 = sh[4]; j4 > 0; ) {\n\t\t\t\tif ( j4 < bsize ) {\n\t\t\t\t\ts4 = j4;\n\t\t\t\t\tj4 = 0;\n\t\t\t\t} else {\n\t\t\t\t\ts4 = bsize;\n\t\t\t\t\tj4 -= bsize;\n\t\t\t\t}\n\t\t\t\tdx5 = sx[5] - ( s4*sx[4] );\n\t\t\t\tox4 = ox5 + ( j4*sx[4] );\n\t\t\t\tfor ( j3 = sh[3]; j3 > 0; ) {\n\t\t\t\t\tif ( j3 < bsize ) {\n\t\t\t\t\t\ts3 = j3;\n\t\t\t\t\t\tj3 = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts3 = bsize;\n\t\t\t\t\t\tj3 -= bsize;\n\t\t\t\t\t}\n\t\t\t\t\tdx4 = sx[4] - ( s3*sx[3] );\n\t\t\t\t\tox3 = ox4 + ( j3*sx[3] );\n\t\t\t\t\tfor ( j2 = sh[2]; j2 > 0; ) {\n\t\t\t\t\t\tif ( j2 < bsize ) {\n\t\t\t\t\t\t\ts2 = j2;\n\t\t\t\t\t\t\tj2 = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ts2 = bsize;\n\t\t\t\t\t\t\tj2 -= bsize;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdx3 = sx[3] - ( s2*sx[2] );\n\t\t\t\t\t\tox2 = ox3 + ( j2*sx[2] );\n\t\t\t\t\t\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\t\t\t\t\t\tif ( j1 < bsize ) {\n\t\t\t\t\t\t\t\ts1 = j1;\n\t\t\t\t\t\t\t\tj1 = 0;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ts1 = bsize;\n\t\t\t\t\t\t\t\tj1 -= bsize;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdx2 = sx[2] - ( s1*sx[1] );\n\t\t\t\t\t\t\tox1 = ox2 + ( j1*sx[1] );\n\t\t\t\t\t\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\t\t\t\t\t\tif ( j0 < bsize ) {\n\t\t\t\t\t\t\t\t\ts0 = j0;\n\t\t\t\t\t\t\t\t\tj0 = 0;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\ts0 = bsize;\n\t\t\t\t\t\t\t\t\tj0 -= bsize;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\t\t\t\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t\t\t\t\t\t// Compute the loop offset increment:\n\t\t\t\t\t\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t\t\t\t\t\t// Iterate over the ndarray dimensions...\n\t\t\t\t\t\t\t\tfor ( i6 = 0; i6 < s6; i6++ ) {\n\t\t\t\t\t\t\t\t\tfor ( i5 = 0; i5 < s5; i5++ ) {\n\t\t\t\t\t\t\t\t\t\tfor ( i4 = 0; i4 < s4; i4++ ) {\n\t\t\t\t\t\t\t\t\t\t\tfor ( i3 = 0; i3 < s3; i3++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\tfor ( i2 = 0; i2 < s2; i2++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif ( xbuf[ ix ] === value ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn true;\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\t\t\t\t\t\tix += dx0;\n\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\tix += dx1;\n\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\tix += dx2;\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\tix += dx3;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tix += dx4;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tix += dx5;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tix += dx6;\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}\n\t\t}\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default blockedincludes7d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MODULES //\n\nimport loopOrder from '@stdlib/ndarray-base-nullary-loop-interchange-order';\nimport blockSize from '@stdlib/ndarray-base-nullary-tiling-block-size';\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* import Float64Array from '@stdlib/array-float64';\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 1, 3, 1, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 12, 12, 12, 12, 12, 4, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'float64',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var out = blockedincludes8d( x, 6.0 );\n* // returns true\n*\n* out = blockedincludes8d( x, 100.0 );\n* // returns false\n*/\nfunction blockedincludes8d( x, value ) { // eslint-disable-line max-statements\n\tvar bsize;\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar dx6;\n\tvar dx7;\n\tvar ox1;\n\tvar ox2;\n\tvar ox3;\n\tvar ox4;\n\tvar ox5;\n\tvar ox6;\n\tvar ox7;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar s2;\n\tvar s3;\n\tvar s4;\n\tvar s5;\n\tvar s6;\n\tvar s7;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar i6;\n\tvar i7;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar j3;\n\tvar j4;\n\tvar j5;\n\tvar j6;\n\tvar j7;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Iterate over blocks...\n\tfor ( j7 = sh[7]; j7 > 0; ) {\n\t\tif ( j7 < bsize ) {\n\t\t\ts7 = j7;\n\t\t\tj7 = 0;\n\t\t} else {\n\t\t\ts7 = bsize;\n\t\t\tj7 -= bsize;\n\t\t}\n\t\tox7 = ox + ( j7*sx[7] );\n\t\tfor ( j6 = sh[6]; j6 > 0; ) {\n\t\t\tif ( j6 < bsize ) {\n\t\t\t\ts6 = j6;\n\t\t\t\tj6 = 0;\n\t\t\t} else {\n\t\t\t\ts6 = bsize;\n\t\t\t\tj6 -= bsize;\n\t\t\t}\n\t\t\tdx7 = sx[7] - ( s6*sx[6] );\n\t\t\tox6 = ox7 + ( j6*sx[6] );\n\t\t\tfor ( j5 = sh[5]; j5 > 0; ) {\n\t\t\t\tif ( j5 < bsize ) {\n\t\t\t\t\ts5 = j5;\n\t\t\t\t\tj5 = 0;\n\t\t\t\t} else {\n\t\t\t\t\ts5 = bsize;\n\t\t\t\t\tj5 -= bsize;\n\t\t\t\t}\n\t\t\t\tdx6 = sx[6] - ( s5*sx[5] );\n\t\t\t\tox5 = ox6 + ( j5*sx[5] );\n\t\t\t\tfor ( j4 = sh[4]; j4 > 0; ) {\n\t\t\t\t\tif ( j4 < bsize ) {\n\t\t\t\t\t\ts4 = j4;\n\t\t\t\t\t\tj4 = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts4 = bsize;\n\t\t\t\t\t\tj4 -= bsize;\n\t\t\t\t\t}\n\t\t\t\t\tdx5 = sx[5] - ( s4*sx[4] );\n\t\t\t\t\tox4 = ox5 + ( j4*sx[4] );\n\t\t\t\t\tfor ( j3 = sh[3]; j3 > 0; ) {\n\t\t\t\t\t\tif ( j3 < bsize ) {\n\t\t\t\t\t\t\ts3 = j3;\n\t\t\t\t\t\t\tj3 = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ts3 = bsize;\n\t\t\t\t\t\t\tj3 -= bsize;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdx4 = sx[4] - ( s3*sx[3] );\n\t\t\t\t\t\tox3 = ox4 + ( j3*sx[3] );\n\t\t\t\t\t\tfor ( j2 = sh[2]; j2 > 0; ) {\n\t\t\t\t\t\t\tif ( j2 < bsize ) {\n\t\t\t\t\t\t\t\ts2 = j2;\n\t\t\t\t\t\t\t\tj2 = 0;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ts2 = bsize;\n\t\t\t\t\t\t\t\tj2 -= bsize;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdx3 = sx[3] - ( s2*sx[2] );\n\t\t\t\t\t\t\tox2 = ox3 + ( j2*sx[2] );\n\t\t\t\t\t\t\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\t\t\t\t\t\t\tif ( j1 < bsize ) {\n\t\t\t\t\t\t\t\t\ts1 = j1;\n\t\t\t\t\t\t\t\t\tj1 = 0;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\ts1 = bsize;\n\t\t\t\t\t\t\t\t\tj1 -= bsize;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdx2 = sx[2] - ( s1*sx[1] );\n\t\t\t\t\t\t\t\tox1 = ox2 + ( j1*sx[1] );\n\t\t\t\t\t\t\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\t\t\t\t\t\t\tif ( j0 < bsize ) {\n\t\t\t\t\t\t\t\t\t\ts0 = j0;\n\t\t\t\t\t\t\t\t\t\tj0 = 0;\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\ts0 = bsize;\n\t\t\t\t\t\t\t\t\t\tj0 -= bsize;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\t\t\t\t\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t\t\t\t\t\t\t// Compute the loop offset increment:\n\t\t\t\t\t\t\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t\t\t\t\t\t\t// Iterate over the ndarray dimensions...\n\t\t\t\t\t\t\t\t\tfor ( i7 = 0; i7 < s7; i7++ ) {\n\t\t\t\t\t\t\t\t\t\tfor ( i6 = 0; i6 < s6; i6++ ) {\n\t\t\t\t\t\t\t\t\t\t\tfor ( i5 = 0; i5 < s5; i5++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\tfor ( i4 = 0; i4 < s4; i4++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i3 = 0; i3 < s3; i3++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i2 = 0; i2 < s2; i2++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif ( xbuf[ ix ] === value ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn true;\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\t\t\t\t\t\t\t\t\t\tix += dx0;\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\t\t\t\t\t\t\tix += dx1;\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\t\t\t\t\t\tix += dx2;\n\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\tix += dx3;\n\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\tix += dx4;\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\tix += dx5;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tix += dx6;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tix += dx7;\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}\n\t\t}\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default blockedincludes8d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MODULES //\n\nimport loopOrder from '@stdlib/ndarray-base-nullary-loop-interchange-order';\nimport blockSize from '@stdlib/ndarray-base-nullary-tiling-block-size';\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* import Float64Array from '@stdlib/array-float64';\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 1, 1, 3, 1, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 12, 12, 12, 12, 12, 12, 4, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'float64',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var out = blockedincludes9d( x, 6.0 );\n* // returns true\n*\n* out = blockedincludes9d( x, 100.0 );\n* // returns false\n*/\nfunction blockedincludes9d( x, value ) { // eslint-disable-line max-statements\n\tvar bsize;\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar dx6;\n\tvar dx7;\n\tvar dx8;\n\tvar ox1;\n\tvar ox2;\n\tvar ox3;\n\tvar ox4;\n\tvar ox5;\n\tvar ox6;\n\tvar ox7;\n\tvar ox8;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar s2;\n\tvar s3;\n\tvar s4;\n\tvar s5;\n\tvar s6;\n\tvar s7;\n\tvar s8;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar i6;\n\tvar i7;\n\tvar i8;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar j3;\n\tvar j4;\n\tvar j5;\n\tvar j6;\n\tvar j7;\n\tvar j8;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Iterate over blocks...\n\tfor ( j8 = sh[8]; j8 > 0; ) {\n\t\tif ( j8 < bsize ) {\n\t\t\ts8 = j8;\n\t\t\tj8 = 0;\n\t\t} else {\n\t\t\ts8 = bsize;\n\t\t\tj8 -= bsize;\n\t\t}\n\t\tox8 = ox + ( j8*sx[8] );\n\t\tfor ( j7 = sh[7]; j7 > 0; ) {\n\t\t\tif ( j7 < bsize ) {\n\t\t\t\ts7 = j7;\n\t\t\t\tj7 = 0;\n\t\t\t} else {\n\t\t\t\ts7 = bsize;\n\t\t\t\tj7 -= bsize;\n\t\t\t}\n\t\t\tdx8 = sx[8] - ( s7*sx[7] );\n\t\t\tox7 = ox8 + ( j7*sx[7] );\n\t\t\tfor ( j6 = sh[6]; j6 > 0; ) {\n\t\t\t\tif ( j6 < bsize ) {\n\t\t\t\t\ts6 = j6;\n\t\t\t\t\tj6 = 0;\n\t\t\t\t} else {\n\t\t\t\t\ts6 = bsize;\n\t\t\t\t\tj6 -= bsize;\n\t\t\t\t}\n\t\t\t\tdx7 = sx[7] - ( s6*sx[6] );\n\t\t\t\tox6 = ox7 + ( j6*sx[6] );\n\t\t\t\tfor ( j5 = sh[5]; j5 > 0; ) {\n\t\t\t\t\tif ( j5 < bsize ) {\n\t\t\t\t\t\ts5 = j5;\n\t\t\t\t\t\tj5 = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts5 = bsize;\n\t\t\t\t\t\tj5 -= bsize;\n\t\t\t\t\t}\n\t\t\t\t\tdx6 = sx[6] - ( s5*sx[5] );\n\t\t\t\t\tox5 = ox6 + ( j5*sx[5] );\n\t\t\t\t\tfor ( j4 = sh[4]; j4 > 0; ) {\n\t\t\t\t\t\tif ( j4 < bsize ) {\n\t\t\t\t\t\t\ts4 = j4;\n\t\t\t\t\t\t\tj4 = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ts4 = bsize;\n\t\t\t\t\t\t\tj4 -= bsize;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdx5 = sx[5] - ( s4*sx[4] );\n\t\t\t\t\t\tox4 = ox5 + ( j4*sx[4] );\n\t\t\t\t\t\tfor ( j3 = sh[3]; j3 > 0; ) {\n\t\t\t\t\t\t\tif ( j3 < bsize ) {\n\t\t\t\t\t\t\t\ts3 = j3;\n\t\t\t\t\t\t\t\tj3 = 0;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ts3 = bsize;\n\t\t\t\t\t\t\t\tj3 -= bsize;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdx4 = sx[4] - ( s3*sx[3] );\n\t\t\t\t\t\t\tox3 = ox4 + ( j3*sx[3] );\n\t\t\t\t\t\t\tfor ( j2 = sh[2]; j2 > 0; ) {\n\t\t\t\t\t\t\t\tif ( j2 < bsize ) {\n\t\t\t\t\t\t\t\t\ts2 = j2;\n\t\t\t\t\t\t\t\t\tj2 = 0;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\ts2 = bsize;\n\t\t\t\t\t\t\t\t\tj2 -= bsize;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdx3 = sx[3] - ( s2*sx[2] );\n\t\t\t\t\t\t\t\tox2 = ox3 + ( j2*sx[2] );\n\t\t\t\t\t\t\t\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\t\t\t\t\t\t\t\tif ( j1 < bsize ) {\n\t\t\t\t\t\t\t\t\t\ts1 = j1;\n\t\t\t\t\t\t\t\t\t\tj1 = 0;\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\ts1 = bsize;\n\t\t\t\t\t\t\t\t\t\tj1 -= bsize;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tdx2 = sx[2] - ( s1*sx[1] );\n\t\t\t\t\t\t\t\t\tox1 = ox2 + ( j1*sx[1] );\n\t\t\t\t\t\t\t\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\t\t\t\t\t\t\t\tif ( j0 < bsize ) {\n\t\t\t\t\t\t\t\t\t\t\ts0 = j0;\n\t\t\t\t\t\t\t\t\t\t\tj0 = 0;\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\ts0 = bsize;\n\t\t\t\t\t\t\t\t\t\t\tj0 -= bsize;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\t\t\t\t\t\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t\t\t\t\t\t\t\t// Compute the loop offset increment:\n\t\t\t\t\t\t\t\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t\t\t\t\t\t\t\t// Iterate over the ndarray dimensions...\n\t\t\t\t\t\t\t\t\t\tfor ( i8 = 0; i8 < s8; i8++ ) {\n\t\t\t\t\t\t\t\t\t\t\tfor ( i7 = 0; i7 < s7; i7++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\tfor ( i6 = 0; i6 < s6; i6++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i5 = 0; i5 < s5; i5++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i4 = 0; i4 < s4; i4++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i3 = 0; i3 < s3; i3++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i2 = 0; i2 < s2; i2++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif ( xbuf[ ix ] === value ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn true;\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\t\t\t\t\t\t\t\t\tix += dx0;\n\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\tix += dx1;\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\t\t\t\t\t\t\t\t\t\tix += dx2;\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\t\t\t\t\t\t\tix += dx3;\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\t\t\t\t\t\tix += dx4;\n\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\tix += dx5;\n\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\tix += dx6;\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\tix += dx7;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tix += dx8;\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}\n\t\t}\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default blockedincludes9d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MODULES //\n\nimport loopOrder from '@stdlib/ndarray-base-nullary-loop-interchange-order';\nimport blockSize from '@stdlib/ndarray-base-nullary-tiling-block-size';\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* import Float64Array from '@stdlib/array-float64';\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 1, 1, 1, 3, 1, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 12, 12, 12, 12, 12, 12, 12, 4, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'float64',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var out = blockedincludes10d( x, 6.0 );\n* // returns true\n*\n* out = blockedincludes10d( x, 100.0 );\n* // returns false\n*/\nfunction blockedincludes10d( x, value ) { // eslint-disable-line max-statements, max-lines-per-function\n\tvar bsize;\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar dx6;\n\tvar dx7;\n\tvar dx8;\n\tvar dx9;\n\tvar ox1;\n\tvar ox2;\n\tvar ox3;\n\tvar ox4;\n\tvar ox5;\n\tvar ox6;\n\tvar ox7;\n\tvar ox8;\n\tvar ox9;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar s2;\n\tvar s3;\n\tvar s4;\n\tvar s5;\n\tvar s6;\n\tvar s7;\n\tvar s8;\n\tvar s9;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar i6;\n\tvar i7;\n\tvar i8;\n\tvar i9;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar j3;\n\tvar j4;\n\tvar j5;\n\tvar j6;\n\tvar j7;\n\tvar j8;\n\tvar j9;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Iterate over blocks...\n\tfor ( j9 = sh[9]; j9 > 0; ) {\n\t\tif ( j9 < bsize ) {\n\t\t\ts9 = j9;\n\t\t\tj9 = 0;\n\t\t} else {\n\t\t\ts9 = bsize;\n\t\t\tj9 -= bsize;\n\t\t}\n\t\tox9 = ox + ( j9*sx[9] );\n\t\tfor ( j8 = sh[8]; j8 > 0; ) {\n\t\t\tif ( j8 < bsize ) {\n\t\t\t\ts8 = j8;\n\t\t\t\tj8 = 0;\n\t\t\t} else {\n\t\t\t\ts8 = bsize;\n\t\t\t\tj8 -= bsize;\n\t\t\t}\n\t\t\tdx9 = sx[9] - ( s8*sx[8] );\n\t\t\tox8 = ox9 + ( j8*sx[8] );\n\t\t\tfor ( j7 = sh[7]; j7 > 0; ) {\n\t\t\t\tif ( j7 < bsize ) {\n\t\t\t\t\ts7 = j7;\n\t\t\t\t\tj7 = 0;\n\t\t\t\t} else {\n\t\t\t\t\ts7 = bsize;\n\t\t\t\t\tj7 -= bsize;\n\t\t\t\t}\n\t\t\t\tdx8 = sx[8] - ( s7*sx[7] );\n\t\t\t\tox7 = ox8 + ( j7*sx[7] );\n\t\t\t\tfor ( j6 = sh[6]; j6 > 0; ) {\n\t\t\t\t\tif ( j6 < bsize ) {\n\t\t\t\t\t\ts6 = j6;\n\t\t\t\t\t\tj6 = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts6 = bsize;\n\t\t\t\t\t\tj6 -= bsize;\n\t\t\t\t\t}\n\t\t\t\t\tdx7 = sx[7] - ( s6*sx[6] );\n\t\t\t\t\tox6 = ox7 + ( j6*sx[6] );\n\t\t\t\t\tfor ( j5 = sh[5]; j5 > 0; ) {\n\t\t\t\t\t\tif ( j5 < bsize ) {\n\t\t\t\t\t\t\ts5 = j5;\n\t\t\t\t\t\t\tj5 = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ts5 = bsize;\n\t\t\t\t\t\t\tj5 -= bsize;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdx6 = sx[6] - ( s5*sx[5] );\n\t\t\t\t\t\tox5 = ox6 + ( j5*sx[5] );\n\t\t\t\t\t\tfor ( j4 = sh[4]; j4 > 0; ) {\n\t\t\t\t\t\t\tif ( j4 < bsize ) {\n\t\t\t\t\t\t\t\ts4 = j4;\n\t\t\t\t\t\t\t\tj4 = 0;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ts4 = bsize;\n\t\t\t\t\t\t\t\tj4 -= bsize;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdx5 = sx[5] - ( s4*sx[4] );\n\t\t\t\t\t\t\tox4 = ox5 + ( j4*sx[4] );\n\t\t\t\t\t\t\tfor ( j3 = sh[3]; j3 > 0; ) {\n\t\t\t\t\t\t\t\tif ( j3 < bsize ) {\n\t\t\t\t\t\t\t\t\ts3 = j3;\n\t\t\t\t\t\t\t\t\tj3 = 0;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\ts3 = bsize;\n\t\t\t\t\t\t\t\t\tj3 -= bsize;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdx4 = sx[4] - ( s3*sx[3] );\n\t\t\t\t\t\t\t\tox3 = ox4 + ( j3*sx[3] );\n\t\t\t\t\t\t\t\tfor ( j2 = sh[2]; j2 > 0; ) {\n\t\t\t\t\t\t\t\t\tif ( j2 < bsize ) {\n\t\t\t\t\t\t\t\t\t\ts2 = j2;\n\t\t\t\t\t\t\t\t\t\tj2 = 0;\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\ts2 = bsize;\n\t\t\t\t\t\t\t\t\t\tj2 -= bsize;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tdx3 = sx[3] - ( s2*sx[2] );\n\t\t\t\t\t\t\t\t\tox2 = ox3 + ( j2*sx[2] );\n\t\t\t\t\t\t\t\t\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\t\t\t\t\t\t\t\t\tif ( j1 < bsize ) {\n\t\t\t\t\t\t\t\t\t\t\ts1 = j1;\n\t\t\t\t\t\t\t\t\t\t\tj1 = 0;\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\ts1 = bsize;\n\t\t\t\t\t\t\t\t\t\t\tj1 -= bsize;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tdx2 = sx[2] - ( s1*sx[1] );\n\t\t\t\t\t\t\t\t\t\tox1 = ox2 + ( j1*sx[1] );\n\t\t\t\t\t\t\t\t\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\t\t\t\t\t\t\t\t\tif ( j0 < bsize ) {\n\t\t\t\t\t\t\t\t\t\t\t\ts0 = j0;\n\t\t\t\t\t\t\t\t\t\t\t\tj0 = 0;\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\ts0 = bsize;\n\t\t\t\t\t\t\t\t\t\t\t\tj0 -= bsize;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\t\t\t\t\t\t\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t\t\t\t\t\t\t\t\t// Compute the loop offset increment:\n\t\t\t\t\t\t\t\t\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t\t\t\t\t\t\t\t\t// Iterate over the ndarray dimensions...\n\t\t\t\t\t\t\t\t\t\t\tfor ( i9 = 0; i9 < s9; i9++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\tfor ( i8 = 0; i8 < s8; i8++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i7 = 0; i7 < s7; i7++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i6 = 0; i6 < s6; i6++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i5 = 0; i5 < s5; i5++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i4 = 0; i4 < s4; i4++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i3 = 0; i3 < s3; i3++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i2 = 0; i2 < s2; i2++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif ( xbuf[ ix ] === value ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn true;\n\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\tix += dx0;\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\t\t\t\t\t\t\t\t\t\t\t\t\t\tix += dx1;\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\t\t\t\t\t\t\t\t\tix += dx2;\n\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\tix += dx3;\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\t\t\t\t\t\t\t\t\t\tix += dx4;\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\t\t\t\t\t\t\tix += dx5;\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\t\t\t\t\t\tix += dx6;\n\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\tix += dx7;\n\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\tix += dx8;\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\tix += dx9;\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\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\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default blockedincludes10d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nimport loopOrder from '@stdlib/ndarray-base-nullary-loop-interchange-order';\nimport blockSize from '@stdlib/ndarray-base-nullary-tiling-block-size';\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {Array} x.accessors - data buffer accessors\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* import toAccessorArray from '@stdlib/array-base-to-accessor-array';\n* import accessors from '@stdlib/array-base-accessors';\n*\n* // Create a data buffer:\n* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'generic',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major',\n* 'accessors': accessors( xbuf ).accessors\n* };\n*\n* // Perform reduction:\n* var out = blockedincludes2d( x, 6.0 );\n* // returns true\n*\n* out = blockedincludes2d( x, 100.0 );\n* // returns false\n*/\nfunction blockedincludes2d( x, value ) {\n\tvar bsize;\n\tvar xbuf;\n\tvar get;\n\tvar dx0;\n\tvar dx1;\n\tvar ox1;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar j0;\n\tvar j1;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Cache accessor:\n\tget = x.accessors[0];\n\n\t// Iterate over blocks...\n\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\tif ( j1 < bsize ) {\n\t\t\ts1 = j1;\n\t\t\tj1 = 0;\n\t\t} else {\n\t\t\ts1 = bsize;\n\t\t\tj1 -= bsize;\n\t\t}\n\t\tox1 = ox + ( j1*sx[1] );\n\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\tif ( j0 < bsize ) {\n\t\t\t\ts0 = j0;\n\t\t\t\tj0 = 0;\n\t\t\t} else {\n\t\t\t\ts0 = bsize;\n\t\t\t\tj0 -= bsize;\n\t\t\t}\n\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t// Compute the loop offset increment:\n\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t// Iterate over the ndarray dimensions...\n\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\tif ( get( xbuf, ix ) === value ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx0;\n\t\t\t\t}\n\t\t\t\tix += dx1;\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default blockedincludes2d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth */\n\n'use strict';\n\n// MODULES //\n\nimport loopOrder from '@stdlib/ndarray-base-nullary-loop-interchange-order';\nimport blockSize from '@stdlib/ndarray-base-nullary-tiling-block-size';\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {Array} x.accessors - data buffer accessors\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* import toAccessorArray from '@stdlib/array-base-to-accessor-array';\n* import accessors from '@stdlib/array-base-accessors';\n*\n* // Create a data buffer:\n* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'generic',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major',\n* 'accessors': accessors( xbuf ).accessors\n* };\n*\n* // Perform reduction:\n* var out = blockedincludes3d( x, 6.0 );\n* // returns true\n*\n* out = blockedincludes3d( x, 100.0 );\n* // returns false\n*/\nfunction blockedincludes3d( x, value ) {\n\tvar bsize;\n\tvar xbuf;\n\tvar get;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar ox1;\n\tvar ox2;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar s2;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Cache accessor:\n\tget = x.accessors[0];\n\n\t// Iterate over blocks...\n\tfor ( j2 = sh[2]; j2 > 0; ) {\n\t\tif ( j2 < bsize ) {\n\t\t\ts2 = j2;\n\t\t\tj2 = 0;\n\t\t} else {\n\t\t\ts2 = bsize;\n\t\t\tj2 -= bsize;\n\t\t}\n\t\tox2 = ox + ( j2*sx[2] );\n\t\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\t\tif ( j1 < bsize ) {\n\t\t\t\ts1 = j1;\n\t\t\t\tj1 = 0;\n\t\t\t} else {\n\t\t\t\ts1 = bsize;\n\t\t\t\tj1 -= bsize;\n\t\t\t}\n\t\t\tdx2 = sx[2] - ( s1*sx[1] );\n\t\t\tox1 = ox2 + ( j1*sx[1] );\n\t\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\t\tif ( j0 < bsize ) {\n\t\t\t\t\ts0 = j0;\n\t\t\t\t\tj0 = 0;\n\t\t\t\t} else {\n\t\t\t\t\ts0 = bsize;\n\t\t\t\t\tj0 -= bsize;\n\t\t\t\t}\n\t\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t\t// Compute the loop offset increment:\n\t\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t\t// Iterate over the ndarray dimensions...\n\t\t\t\tfor ( i2 = 0; i2 < s2; i2++ ) {\n\t\t\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\t\t\tif ( get( xbuf, ix ) === value ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tix += dx1;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx2;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default blockedincludes3d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth */\n\n'use strict';\n\n// MODULES //\n\nimport loopOrder from '@stdlib/ndarray-base-nullary-loop-interchange-order';\nimport blockSize from '@stdlib/ndarray-base-nullary-tiling-block-size';\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {Array} x.accessors - data buffer accessors\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* import toAccessorArray from '@stdlib/array-base-to-accessor-array';\n* import accessors from '@stdlib/array-base-accessors';\n*\n* // Create a data buffer:\n* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'generic',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major',\n* 'accessors': accessors( xbuf ).accessors\n* };\n*\n* // Perform reduction:\n* var out = blockedincludes4d( x, 6.0 );\n* // returns true\n*\n* out = blockedincludes4d( x, 100.0 );\n* // returns false\n*/\nfunction blockedincludes4d( x, value ) {\n\tvar bsize;\n\tvar xbuf;\n\tvar get;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar ox1;\n\tvar ox2;\n\tvar ox3;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar s2;\n\tvar s3;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar j3;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Cache accessor:\n\tget = x.accessors[0];\n\n\t// Iterate over blocks...\n\tfor ( j3 = sh[3]; j3 > 0; ) {\n\t\tif ( j3 < bsize ) {\n\t\t\ts3 = j3;\n\t\t\tj3 = 0;\n\t\t} else {\n\t\t\ts3 = bsize;\n\t\t\tj3 -= bsize;\n\t\t}\n\t\tox3 = ox + ( j3*sx[3] );\n\t\tfor ( j2 = sh[2]; j2 > 0; ) {\n\t\t\tif ( j2 < bsize ) {\n\t\t\t\ts2 = j2;\n\t\t\t\tj2 = 0;\n\t\t\t} else {\n\t\t\t\ts2 = bsize;\n\t\t\t\tj2 -= bsize;\n\t\t\t}\n\t\t\tdx3 = sx[3] - ( s2*sx[2] );\n\t\t\tox2 = ox3 + ( j2*sx[2] );\n\t\t\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\t\t\tif ( j1 < bsize ) {\n\t\t\t\t\ts1 = j1;\n\t\t\t\t\tj1 = 0;\n\t\t\t\t} else {\n\t\t\t\t\ts1 = bsize;\n\t\t\t\t\tj1 -= bsize;\n\t\t\t\t}\n\t\t\t\tdx2 = sx[2] - ( s1*sx[1] );\n\t\t\t\tox1 = ox2 + ( j1*sx[1] );\n\t\t\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\t\t\tif ( j0 < bsize ) {\n\t\t\t\t\t\ts0 = j0;\n\t\t\t\t\t\tj0 = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts0 = bsize;\n\t\t\t\t\t\tj0 -= bsize;\n\t\t\t\t\t}\n\t\t\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t\t\t// Compute the loop offset increment:\n\t\t\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t\t\t// Iterate over the ndarray dimensions...\n\t\t\t\t\tfor ( i3 = 0; i3 < s3; i3++ ) {\n\t\t\t\t\t\tfor ( i2 = 0; i2 < s2; i2++ ) {\n\t\t\t\t\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\t\t\t\t\tif ( get( xbuf, ix ) === value ) {\n\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tix += dx1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tix += dx2;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tix += dx3;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default blockedincludes4d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth */\n\n'use strict';\n\n// MODULES //\n\nimport loopOrder from '@stdlib/ndarray-base-nullary-loop-interchange-order';\nimport blockSize from '@stdlib/ndarray-base-nullary-tiling-block-size';\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {Array} x.accessors - data buffer accessors\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* import toAccessorArray from '@stdlib/array-base-to-accessor-array';\n* import accessors from '@stdlib/array-base-accessors';\n*\n* // Create a data buffer:\n* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 8, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'generic',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major',\n* 'accessors': accessors( xbuf ).accessors\n* };\n*\n* // Perform reduction:\n* var out = blockedincludes5d( x, 6.0 );\n* // returns true\n*\n* out = blockedincludes5d( x, 100.0 );\n* // returns false\n*/\nfunction blockedincludes5d( x, value ) {\n\tvar bsize;\n\tvar xbuf;\n\tvar get;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar ox1;\n\tvar ox2;\n\tvar ox3;\n\tvar ox4;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar s2;\n\tvar s3;\n\tvar s4;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar j3;\n\tvar j4;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Cache accessor:\n\tget = x.accessors[0];\n\n\t// Iterate over blocks...\n\tfor ( j4 = sh[4]; j4 > 0; ) {\n\t\tif ( j4 < bsize ) {\n\t\t\ts4 = j4;\n\t\t\tj4 = 0;\n\t\t} else {\n\t\t\ts4 = bsize;\n\t\t\tj4 -= bsize;\n\t\t}\n\t\tox4 = ox + ( j4*sx[4] );\n\t\tfor ( j3 = sh[3]; j3 > 0; ) {\n\t\t\tif ( j3 < bsize ) {\n\t\t\t\ts3 = j3;\n\t\t\t\tj3 = 0;\n\t\t\t} else {\n\t\t\t\ts3 = bsize;\n\t\t\t\tj3 -= bsize;\n\t\t\t}\n\t\t\tdx4 = sx[4] - ( s3*sx[3] );\n\t\t\tox3 = ox4 + ( j3*sx[3] );\n\t\t\tfor ( j2 = sh[2]; j2 > 0; ) {\n\t\t\t\tif ( j2 < bsize ) {\n\t\t\t\t\ts2 = j2;\n\t\t\t\t\tj2 = 0;\n\t\t\t\t} else {\n\t\t\t\t\ts2 = bsize;\n\t\t\t\t\tj2 -= bsize;\n\t\t\t\t}\n\t\t\t\tdx3 = sx[3] - ( s2*sx[2] );\n\t\t\t\tox2 = ox3 + ( j2*sx[2] );\n\t\t\t\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\t\t\t\tif ( j1 < bsize ) {\n\t\t\t\t\t\ts1 = j1;\n\t\t\t\t\t\tj1 = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts1 = bsize;\n\t\t\t\t\t\tj1 -= bsize;\n\t\t\t\t\t}\n\t\t\t\t\tdx2 = sx[2] - ( s1*sx[1] );\n\t\t\t\t\tox1 = ox2 + ( j1*sx[1] );\n\t\t\t\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\t\t\t\tif ( j0 < bsize ) {\n\t\t\t\t\t\t\ts0 = j0;\n\t\t\t\t\t\t\tj0 = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ts0 = bsize;\n\t\t\t\t\t\t\tj0 -= bsize;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\t\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t\t\t\t// Compute the loop offset increment:\n\t\t\t\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t\t\t\t// Iterate over the ndarray dimensions...\n\t\t\t\t\t\tfor ( i4 = 0; i4 < s4; i4++ ) {\n\t\t\t\t\t\t\tfor ( i3 = 0; i3 < s3; i3++ ) {\n\t\t\t\t\t\t\t\tfor ( i2 = 0; i2 < s2; i2++ ) {\n\t\t\t\t\t\t\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\t\t\t\t\t\t\tif ( get( xbuf, ix ) === value ) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tix += dx1;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tix += dx2;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tix += dx3;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tix += dx4;\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\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default blockedincludes5d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MODULES //\n\nimport loopOrder from '@stdlib/ndarray-base-nullary-loop-interchange-order';\nimport blockSize from '@stdlib/ndarray-base-nullary-tiling-block-size';\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {Array} x.accessors - data buffer accessors\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* import toAccessorArray from '@stdlib/array-base-to-accessor-array';\n* import accessors from '@stdlib/array-base-accessors';\n*\n* // Create a data buffer:\n* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 8, 8, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'generic',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major',\n* 'accessors': accessors( xbuf ).accessors\n* };\n*\n* // Perform reduction:\n* var out = blockedincludes6d( x, 6.0 );\n* // returns true\n*\n* out = blockedincludes6d( x, 100.0 );\n* // returns false\n*/\nfunction blockedincludes6d( x, value ) { // eslint-disable-line max-statements\n\tvar bsize;\n\tvar xbuf;\n\tvar get;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar ox1;\n\tvar ox2;\n\tvar ox3;\n\tvar ox4;\n\tvar ox5;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar s2;\n\tvar s3;\n\tvar s4;\n\tvar s5;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar j3;\n\tvar j4;\n\tvar j5;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Cache accessor:\n\tget = x.accessors[0];\n\n\t// Iterate over blocks...\n\tfor ( j5 = sh[5]; j5 > 0; ) {\n\t\tif ( j5 < bsize ) {\n\t\t\ts5 = j5;\n\t\t\tj5 = 0;\n\t\t} else {\n\t\t\ts5 = bsize;\n\t\t\tj5 -= bsize;\n\t\t}\n\t\tox5 = ox + ( j5*sx[5] );\n\t\tfor ( j4 = sh[4]; j4 > 0; ) {\n\t\t\tif ( j4 < bsize ) {\n\t\t\t\ts4 = j4;\n\t\t\t\tj4 = 0;\n\t\t\t} else {\n\t\t\t\ts4 = bsize;\n\t\t\t\tj4 -= bsize;\n\t\t\t}\n\t\t\tdx5 = sx[5] - ( s4*sx[4] );\n\t\t\tox4 = ox5 + ( j4*sx[4] );\n\t\t\tfor ( j3 = sh[3]; j3 > 0; ) {\n\t\t\t\tif ( j3 < bsize ) {\n\t\t\t\t\ts3 = j3;\n\t\t\t\t\tj3 = 0;\n\t\t\t\t} else {\n\t\t\t\t\ts3 = bsize;\n\t\t\t\t\tj3 -= bsize;\n\t\t\t\t}\n\t\t\t\tdx4 = sx[4] - ( s3*sx[3] );\n\t\t\t\tox3 = ox4 + ( j3*sx[3] );\n\t\t\t\tfor ( j2 = sh[2]; j2 > 0; ) {\n\t\t\t\t\tif ( j2 < bsize ) {\n\t\t\t\t\t\ts2 = j2;\n\t\t\t\t\t\tj2 = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts2 = bsize;\n\t\t\t\t\t\tj2 -= bsize;\n\t\t\t\t\t}\n\t\t\t\t\tdx3 = sx[3] - ( s2*sx[2] );\n\t\t\t\t\tox2 = ox3 + ( j2*sx[2] );\n\t\t\t\t\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\t\t\t\t\tif ( j1 < bsize ) {\n\t\t\t\t\t\t\ts1 = j1;\n\t\t\t\t\t\t\tj1 = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ts1 = bsize;\n\t\t\t\t\t\t\tj1 -= bsize;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdx2 = sx[2] - ( s1*sx[1] );\n\t\t\t\t\t\tox1 = ox2 + ( j1*sx[1] );\n\t\t\t\t\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\t\t\t\t\tif ( j0 < bsize ) {\n\t\t\t\t\t\t\t\ts0 = j0;\n\t\t\t\t\t\t\t\tj0 = 0;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ts0 = bsize;\n\t\t\t\t\t\t\t\tj0 -= bsize;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\t\t\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t\t\t\t\t// Compute the loop offset increment:\n\t\t\t\t\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t\t\t\t\t// Iterate over the ndarray dimensions...\n\t\t\t\t\t\t\tfor ( i5 = 0; i5 < s5; i5++ ) {\n\t\t\t\t\t\t\t\tfor ( i4 = 0; i4 < s4; i4++ ) {\n\t\t\t\t\t\t\t\t\tfor ( i3 = 0; i3 < s3; i3++ ) {\n\t\t\t\t\t\t\t\t\t\tfor ( i2 = 0; i2 < s2; i2++ ) {\n\t\t\t\t\t\t\t\t\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tif ( get( xbuf, ix ) === value ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn true;\n\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\tix += dx0;\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\tix += dx1;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tix += dx2;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tix += dx3;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tix += dx4;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tix += dx5;\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}\n\t\t}\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default blockedincludes6d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MODULES //\n\nimport loopOrder from '@stdlib/ndarray-base-nullary-loop-interchange-order';\nimport blockSize from '@stdlib/ndarray-base-nullary-tiling-block-size';\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {Array} x.accessors - data buffer accessors\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* import toAccessorArray from '@stdlib/array-base-to-accessor-array';\n* import accessors from '@stdlib/array-base-accessors';\n*\n* // Create a data buffer:\n* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 8, 8, 8, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'generic',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major',\n* 'accessors': accessors( xbuf ).accessors\n* };\n*\n* // Perform reduction:\n* var out = blockedincludes7d( x, 6.0 );\n* // returns true\n*\n* out = blockedincludes7d( x, 100.0 );\n* // returns false\n*/\nfunction blockedincludes7d( x, value ) { // eslint-disable-line max-statements\n\tvar bsize;\n\tvar xbuf;\n\tvar get;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar dx6;\n\tvar ox1;\n\tvar ox2;\n\tvar ox3;\n\tvar ox4;\n\tvar ox5;\n\tvar ox6;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar s2;\n\tvar s3;\n\tvar s4;\n\tvar s5;\n\tvar s6;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar i6;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar j3;\n\tvar j4;\n\tvar j5;\n\tvar j6;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Cache accessor:\n\tget = x.accessors[0];\n\n\t// Iterate over blocks...\n\tfor ( j6 = sh[6]; j6 > 0; ) {\n\t\tif ( j6 < bsize ) {\n\t\t\ts6 = j6;\n\t\t\tj6 = 0;\n\t\t} else {\n\t\t\ts6 = bsize;\n\t\t\tj6 -= bsize;\n\t\t}\n\t\tox6 = ox + ( j6*sx[6] );\n\t\tfor ( j5 = sh[5]; j5 > 0; ) {\n\t\t\tif ( j5 < bsize ) {\n\t\t\t\ts5 = j5;\n\t\t\t\tj5 = 0;\n\t\t\t} else {\n\t\t\t\ts5 = bsize;\n\t\t\t\tj5 -= bsize;\n\t\t\t}\n\t\t\tdx6 = sx[6] - ( s5*sx[5] );\n\t\t\tox5 = ox6 + ( j5*sx[5] );\n\t\t\tfor ( j4 = sh[4]; j4 > 0; ) {\n\t\t\t\tif ( j4 < bsize ) {\n\t\t\t\t\ts4 = j4;\n\t\t\t\t\tj4 = 0;\n\t\t\t\t} else {\n\t\t\t\t\ts4 = bsize;\n\t\t\t\t\tj4 -= bsize;\n\t\t\t\t}\n\t\t\t\tdx5 = sx[5] - ( s4*sx[4] );\n\t\t\t\tox4 = ox5 + ( j4*sx[4] );\n\t\t\t\tfor ( j3 = sh[3]; j3 > 0; ) {\n\t\t\t\t\tif ( j3 < bsize ) {\n\t\t\t\t\t\ts3 = j3;\n\t\t\t\t\t\tj3 = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts3 = bsize;\n\t\t\t\t\t\tj3 -= bsize;\n\t\t\t\t\t}\n\t\t\t\t\tdx4 = sx[4] - ( s3*sx[3] );\n\t\t\t\t\tox3 = ox4 + ( j3*sx[3] );\n\t\t\t\t\tfor ( j2 = sh[2]; j2 > 0; ) {\n\t\t\t\t\t\tif ( j2 < bsize ) {\n\t\t\t\t\t\t\ts2 = j2;\n\t\t\t\t\t\t\tj2 = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ts2 = bsize;\n\t\t\t\t\t\t\tj2 -= bsize;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdx3 = sx[3] - ( s2*sx[2] );\n\t\t\t\t\t\tox2 = ox3 + ( j2*sx[2] );\n\t\t\t\t\t\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\t\t\t\t\t\tif ( j1 < bsize ) {\n\t\t\t\t\t\t\t\ts1 = j1;\n\t\t\t\t\t\t\t\tj1 = 0;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ts1 = bsize;\n\t\t\t\t\t\t\t\tj1 -= bsize;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdx2 = sx[2] - ( s1*sx[1] );\n\t\t\t\t\t\t\tox1 = ox2 + ( j1*sx[1] );\n\t\t\t\t\t\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\t\t\t\t\t\tif ( j0 < bsize ) {\n\t\t\t\t\t\t\t\t\ts0 = j0;\n\t\t\t\t\t\t\t\t\tj0 = 0;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\ts0 = bsize;\n\t\t\t\t\t\t\t\t\tj0 -= bsize;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\t\t\t\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t\t\t\t\t\t// Compute the loop offset increment:\n\t\t\t\t\t\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t\t\t\t\t\t// Iterate over the ndarray dimensions...\n\t\t\t\t\t\t\t\tfor ( i6 = 0; i6 < s6; i6++ ) {\n\t\t\t\t\t\t\t\t\tfor ( i5 = 0; i5 < s5; i5++ ) {\n\t\t\t\t\t\t\t\t\t\tfor ( i4 = 0; i4 < s4; i4++ ) {\n\t\t\t\t\t\t\t\t\t\t\tfor ( i3 = 0; i3 < s3; i3++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\tfor ( i2 = 0; i2 < s2; i2++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif ( get( xbuf, ix ) === value ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn true;\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\t\t\t\t\t\tix += dx0;\n\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\tix += dx1;\n\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\tix += dx2;\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\tix += dx3;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tix += dx4;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tix += dx5;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tix += dx6;\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}\n\t\t}\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default blockedincludes7d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MODULES //\n\nimport loopOrder from '@stdlib/ndarray-base-nullary-loop-interchange-order';\nimport blockSize from '@stdlib/ndarray-base-nullary-tiling-block-size';\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {Array} x.accessors - data buffer accessors\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* import toAccessorArray from '@stdlib/array-base-to-accessor-array';\n* import accessors from '@stdlib/array-base-accessors';\n*\n* // Create a data buffer:\n* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 8, 8, 8, 8, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'generic',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major',\n* 'accessors': accessors( xbuf ).accessors\n* };\n*\n* // Perform reduction:\n* var out = blockedincludes8d( x, 6.0 );\n* // returns true\n*\n* out = blockedincludes8d( x, 100.0 );\n* // returns false\n*/\nfunction blockedincludes8d( x, value ) { // eslint-disable-line max-statements\n\tvar bsize;\n\tvar xbuf;\n\tvar get;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar dx6;\n\tvar dx7;\n\tvar ox1;\n\tvar ox2;\n\tvar ox3;\n\tvar ox4;\n\tvar ox5;\n\tvar ox6;\n\tvar ox7;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar s2;\n\tvar s3;\n\tvar s4;\n\tvar s5;\n\tvar s6;\n\tvar s7;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar i6;\n\tvar i7;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar j3;\n\tvar j4;\n\tvar j5;\n\tvar j6;\n\tvar j7;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Cache accessor:\n\tget = x.accessors[0];\n\n\t// Iterate over blocks...\n\tfor ( j7 = sh[7]; j7 > 0; ) {\n\t\tif ( j7 < bsize ) {\n\t\t\ts7 = j7;\n\t\t\tj7 = 0;\n\t\t} else {\n\t\t\ts7 = bsize;\n\t\t\tj7 -= bsize;\n\t\t}\n\t\tox7 = ox + ( j7*sx[7] );\n\t\tfor ( j6 = sh[6]; j6 > 0; ) {\n\t\t\tif ( j6 < bsize ) {\n\t\t\t\ts6 = j6;\n\t\t\t\tj6 = 0;\n\t\t\t} else {\n\t\t\t\ts6 = bsize;\n\t\t\t\tj6 -= bsize;\n\t\t\t}\n\t\t\tdx7 = sx[7] - ( s6*sx[6] );\n\t\t\tox6 = ox7 + ( j6*sx[6] );\n\t\t\tfor ( j5 = sh[5]; j5 > 0; ) {\n\t\t\t\tif ( j5 < bsize ) {\n\t\t\t\t\ts5 = j5;\n\t\t\t\t\tj5 = 0;\n\t\t\t\t} else {\n\t\t\t\t\ts5 = bsize;\n\t\t\t\t\tj5 -= bsize;\n\t\t\t\t}\n\t\t\t\tdx6 = sx[6] - ( s5*sx[5] );\n\t\t\t\tox5 = ox6 + ( j5*sx[5] );\n\t\t\t\tfor ( j4 = sh[4]; j4 > 0; ) {\n\t\t\t\t\tif ( j4 < bsize ) {\n\t\t\t\t\t\ts4 = j4;\n\t\t\t\t\t\tj4 = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts4 = bsize;\n\t\t\t\t\t\tj4 -= bsize;\n\t\t\t\t\t}\n\t\t\t\t\tdx5 = sx[5] - ( s4*sx[4] );\n\t\t\t\t\tox4 = ox5 + ( j4*sx[4] );\n\t\t\t\t\tfor ( j3 = sh[3]; j3 > 0; ) {\n\t\t\t\t\t\tif ( j3 < bsize ) {\n\t\t\t\t\t\t\ts3 = j3;\n\t\t\t\t\t\t\tj3 = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ts3 = bsize;\n\t\t\t\t\t\t\tj3 -= bsize;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdx4 = sx[4] - ( s3*sx[3] );\n\t\t\t\t\t\tox3 = ox4 + ( j3*sx[3] );\n\t\t\t\t\t\tfor ( j2 = sh[2]; j2 > 0; ) {\n\t\t\t\t\t\t\tif ( j2 < bsize ) {\n\t\t\t\t\t\t\t\ts2 = j2;\n\t\t\t\t\t\t\t\tj2 = 0;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ts2 = bsize;\n\t\t\t\t\t\t\t\tj2 -= bsize;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdx3 = sx[3] - ( s2*sx[2] );\n\t\t\t\t\t\t\tox2 = ox3 + ( j2*sx[2] );\n\t\t\t\t\t\t\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\t\t\t\t\t\t\tif ( j1 < bsize ) {\n\t\t\t\t\t\t\t\t\ts1 = j1;\n\t\t\t\t\t\t\t\t\tj1 = 0;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\ts1 = bsize;\n\t\t\t\t\t\t\t\t\tj1 -= bsize;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdx2 = sx[2] - ( s1*sx[1] );\n\t\t\t\t\t\t\t\tox1 = ox2 + ( j1*sx[1] );\n\t\t\t\t\t\t\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\t\t\t\t\t\t\tif ( j0 < bsize ) {\n\t\t\t\t\t\t\t\t\t\ts0 = j0;\n\t\t\t\t\t\t\t\t\t\tj0 = 0;\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\ts0 = bsize;\n\t\t\t\t\t\t\t\t\t\tj0 -= bsize;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\t\t\t\t\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t\t\t\t\t\t\t// Compute the loop offset increment:\n\t\t\t\t\t\t\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t\t\t\t\t\t\t// Iterate over the ndarray dimensions...\n\t\t\t\t\t\t\t\t\tfor ( i7 = 0; i7 < s7; i7++ ) {\n\t\t\t\t\t\t\t\t\t\tfor ( i6 = 0; i6 < s6; i6++ ) {\n\t\t\t\t\t\t\t\t\t\t\tfor ( i5 = 0; i5 < s5; i5++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\tfor ( i4 = 0; i4 < s4; i4++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i3 = 0; i3 < s3; i3++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i2 = 0; i2 < s2; i2++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif ( get( xbuf, ix ) === value ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn true;\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\t\t\t\t\t\t\t\t\t\tix += dx0;\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\t\t\t\t\t\t\tix += dx1;\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\t\t\t\t\t\tix += dx2;\n\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\tix += dx3;\n\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\tix += dx4;\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\tix += dx5;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tix += dx6;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tix += dx7;\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}\n\t\t}\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default blockedincludes8d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MODULES //\n\nimport loopOrder from '@stdlib/ndarray-base-nullary-loop-interchange-order';\nimport blockSize from '@stdlib/ndarray-base-nullary-tiling-block-size';\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {Array} x.accessors - data buffer accessors\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* import toAccessorArray from '@stdlib/array-base-to-accessor-array';\n* import accessors from '@stdlib/array-base-accessors';\n*\n* // Create a data buffer:\n* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 1, 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 8, 8, 8, 8, 8, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'generic',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major',\n* 'accessors': accessors( xbuf ).accessors\n* };\n*\n* // Perform reduction:\n* var out = blockedincludes9d( x, 6.0 );\n* // returns true\n*\n* out = blockedincludes9d( x, 100.0 );\n* // returns false\n*/\nfunction blockedincludes9d( x, value ) { // eslint-disable-line max-statements\n\tvar bsize;\n\tvar xbuf;\n\tvar get;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar dx6;\n\tvar dx7;\n\tvar dx8;\n\tvar ox1;\n\tvar ox2;\n\tvar ox3;\n\tvar ox4;\n\tvar ox5;\n\tvar ox6;\n\tvar ox7;\n\tvar ox8;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar s2;\n\tvar s3;\n\tvar s4;\n\tvar s5;\n\tvar s6;\n\tvar s7;\n\tvar s8;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar i6;\n\tvar i7;\n\tvar i8;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar j3;\n\tvar j4;\n\tvar j5;\n\tvar j6;\n\tvar j7;\n\tvar j8;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Cache accessor:\n\tget = x.accessors[0];\n\n\t// Iterate over blocks...\n\tfor ( j8 = sh[8]; j8 > 0; ) {\n\t\tif ( j8 < bsize ) {\n\t\t\ts8 = j8;\n\t\t\tj8 = 0;\n\t\t} else {\n\t\t\ts8 = bsize;\n\t\t\tj8 -= bsize;\n\t\t}\n\t\tox8 = ox + ( j8*sx[8] );\n\t\tfor ( j7 = sh[7]; j7 > 0; ) {\n\t\t\tif ( j7 < bsize ) {\n\t\t\t\ts7 = j7;\n\t\t\t\tj7 = 0;\n\t\t\t} else {\n\t\t\t\ts7 = bsize;\n\t\t\t\tj7 -= bsize;\n\t\t\t}\n\t\t\tdx8 = sx[8] - ( s7*sx[7] );\n\t\t\tox7 = ox8 + ( j7*sx[7] );\n\t\t\tfor ( j6 = sh[6]; j6 > 0; ) {\n\t\t\t\tif ( j6 < bsize ) {\n\t\t\t\t\ts6 = j6;\n\t\t\t\t\tj6 = 0;\n\t\t\t\t} else {\n\t\t\t\t\ts6 = bsize;\n\t\t\t\t\tj6 -= bsize;\n\t\t\t\t}\n\t\t\t\tdx7 = sx[7] - ( s6*sx[6] );\n\t\t\t\tox6 = ox7 + ( j6*sx[6] );\n\t\t\t\tfor ( j5 = sh[5]; j5 > 0; ) {\n\t\t\t\t\tif ( j5 < bsize ) {\n\t\t\t\t\t\ts5 = j5;\n\t\t\t\t\t\tj5 = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts5 = bsize;\n\t\t\t\t\t\tj5 -= bsize;\n\t\t\t\t\t}\n\t\t\t\t\tdx6 = sx[6] - ( s5*sx[5] );\n\t\t\t\t\tox5 = ox6 + ( j5*sx[5] );\n\t\t\t\t\tfor ( j4 = sh[4]; j4 > 0; ) {\n\t\t\t\t\t\tif ( j4 < bsize ) {\n\t\t\t\t\t\t\ts4 = j4;\n\t\t\t\t\t\t\tj4 = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ts4 = bsize;\n\t\t\t\t\t\t\tj4 -= bsize;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdx5 = sx[5] - ( s4*sx[4] );\n\t\t\t\t\t\tox4 = ox5 + ( j4*sx[4] );\n\t\t\t\t\t\tfor ( j3 = sh[3]; j3 > 0; ) {\n\t\t\t\t\t\t\tif ( j3 < bsize ) {\n\t\t\t\t\t\t\t\ts3 = j3;\n\t\t\t\t\t\t\t\tj3 = 0;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ts3 = bsize;\n\t\t\t\t\t\t\t\tj3 -= bsize;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdx4 = sx[4] - ( s3*sx[3] );\n\t\t\t\t\t\t\tox3 = ox4 + ( j3*sx[3] );\n\t\t\t\t\t\t\tfor ( j2 = sh[2]; j2 > 0; ) {\n\t\t\t\t\t\t\t\tif ( j2 < bsize ) {\n\t\t\t\t\t\t\t\t\ts2 = j2;\n\t\t\t\t\t\t\t\t\tj2 = 0;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\ts2 = bsize;\n\t\t\t\t\t\t\t\t\tj2 -= bsize;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdx3 = sx[3] - ( s2*sx[2] );\n\t\t\t\t\t\t\t\tox2 = ox3 + ( j2*sx[2] );\n\t\t\t\t\t\t\t\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\t\t\t\t\t\t\t\tif ( j1 < bsize ) {\n\t\t\t\t\t\t\t\t\t\ts1 = j1;\n\t\t\t\t\t\t\t\t\t\tj1 = 0;\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\ts1 = bsize;\n\t\t\t\t\t\t\t\t\t\tj1 -= bsize;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tdx2 = sx[2] - ( s1*sx[1] );\n\t\t\t\t\t\t\t\t\tox1 = ox2 + ( j1*sx[1] );\n\t\t\t\t\t\t\t\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\t\t\t\t\t\t\t\tif ( j0 < bsize ) {\n\t\t\t\t\t\t\t\t\t\t\ts0 = j0;\n\t\t\t\t\t\t\t\t\t\t\tj0 = 0;\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\ts0 = bsize;\n\t\t\t\t\t\t\t\t\t\t\tj0 -= bsize;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\t\t\t\t\t\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t\t\t\t\t\t\t\t// Compute the loop offset increment:\n\t\t\t\t\t\t\t\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t\t\t\t\t\t\t\t// Iterate over the ndarray dimensions...\n\t\t\t\t\t\t\t\t\t\tfor ( i8 = 0; i8 < s8; i8++ ) {\n\t\t\t\t\t\t\t\t\t\t\tfor ( i7 = 0; i7 < s7; i7++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\tfor ( i6 = 0; i6 < s6; i6++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i5 = 0; i5 < s5; i5++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i4 = 0; i4 < s4; i4++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i3 = 0; i3 < s3; i3++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i2 = 0; i2 < s2; i2++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif ( get( xbuf, ix ) === value ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn true;\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\t\t\t\t\t\t\t\t\tix += dx0;\n\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\tix += dx1;\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\t\t\t\t\t\t\t\t\t\tix += dx2;\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\t\t\t\t\t\t\tix += dx3;\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\t\t\t\t\t\tix += dx4;\n\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\tix += dx5;\n\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\tix += dx6;\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\tix += dx7;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tix += dx8;\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}\n\t\t}\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default blockedincludes9d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MODULES //\n\nimport loopOrder from '@stdlib/ndarray-base-nullary-loop-interchange-order';\nimport blockSize from '@stdlib/ndarray-base-nullary-tiling-block-size';\n\n\n// MAIN //\n\n/**\n* Tests whether an ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {Array} x.accessors - data buffer accessors\n* @param {*} value - search element\n* @returns {boolean} result\n*\n* @example\n* import toAccessorArray from '@stdlib/array-base-to-accessor-array';\n* import accessors from '@stdlib/array-base-accessors';\n*\n* // Create a data buffer:\n* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 1, 1, 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 8, 8, 8, 8, 8, 8, 4, 1 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'generic',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major',\n* 'accessors': accessors( xbuf ).accessors\n* };\n*\n* // Perform reduction:\n* var out = blockedincludes10d( x, 6.0 );\n* // returns true\n*\n* out = blockedincludes10d( x, 100.0 );\n* // returns false\n*/\nfunction blockedincludes10d( x, value ) { // eslint-disable-line max-statements, max-lines-per-function\n\tvar bsize;\n\tvar xbuf;\n\tvar get;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar dx6;\n\tvar dx7;\n\tvar dx8;\n\tvar dx9;\n\tvar ox1;\n\tvar ox2;\n\tvar ox3;\n\tvar ox4;\n\tvar ox5;\n\tvar ox6;\n\tvar ox7;\n\tvar ox8;\n\tvar ox9;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar s2;\n\tvar s3;\n\tvar s4;\n\tvar s5;\n\tvar s6;\n\tvar s7;\n\tvar s8;\n\tvar s9;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar i6;\n\tvar i7;\n\tvar i8;\n\tvar i9;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar j3;\n\tvar j4;\n\tvar j5;\n\tvar j6;\n\tvar j7;\n\tvar j8;\n\tvar j9;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Cache accessor:\n\tget = x.accessors[0];\n\n\t// Iterate over blocks...\n\tfor ( j9 = sh[9]; j9 > 0; ) {\n\t\tif ( j9 < bsize ) {\n\t\t\ts9 = j9;\n\t\t\tj9 = 0;\n\t\t} else {\n\t\t\ts9 = bsize;\n\t\t\tj9 -= bsize;\n\t\t}\n\t\tox9 = ox + ( j9*sx[9] );\n\t\tfor ( j8 = sh[8]; j8 > 0; ) {\n\t\t\tif ( j8 < bsize ) {\n\t\t\t\ts8 = j8;\n\t\t\t\tj8 = 0;\n\t\t\t} else {\n\t\t\t\ts8 = bsize;\n\t\t\t\tj8 -= bsize;\n\t\t\t}\n\t\t\tdx9 = sx[9] - ( s8*sx[8] );\n\t\t\tox8 = ox9 + ( j8*sx[8] );\n\t\t\tfor ( j7 = sh[7]; j7 > 0; ) {\n\t\t\t\tif ( j7 < bsize ) {\n\t\t\t\t\ts7 = j7;\n\t\t\t\t\tj7 = 0;\n\t\t\t\t} else {\n\t\t\t\t\ts7 = bsize;\n\t\t\t\t\tj7 -= bsize;\n\t\t\t\t}\n\t\t\t\tdx8 = sx[8] - ( s7*sx[7] );\n\t\t\t\tox7 = ox8 + ( j7*sx[7] );\n\t\t\t\tfor ( j6 = sh[6]; j6 > 0; ) {\n\t\t\t\t\tif ( j6 < bsize ) {\n\t\t\t\t\t\ts6 = j6;\n\t\t\t\t\t\tj6 = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts6 = bsize;\n\t\t\t\t\t\tj6 -= bsize;\n\t\t\t\t\t}\n\t\t\t\t\tdx7 = sx[7] - ( s6*sx[6] );\n\t\t\t\t\tox6 = ox7 + ( j6*sx[6] );\n\t\t\t\t\tfor ( j5 = sh[5]; j5 > 0; ) {\n\t\t\t\t\t\tif ( j5 < bsize ) {\n\t\t\t\t\t\t\ts5 = j5;\n\t\t\t\t\t\t\tj5 = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ts5 = bsize;\n\t\t\t\t\t\t\tj5 -= bsize;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdx6 = sx[6] - ( s5*sx[5] );\n\t\t\t\t\t\tox5 = ox6 + ( j5*sx[5] );\n\t\t\t\t\t\tfor ( j4 = sh[4]; j4 > 0; ) {\n\t\t\t\t\t\t\tif ( j4 < bsize ) {\n\t\t\t\t\t\t\t\ts4 = j4;\n\t\t\t\t\t\t\t\tj4 = 0;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ts4 = bsize;\n\t\t\t\t\t\t\t\tj4 -= bsize;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdx5 = sx[5] - ( s4*sx[4] );\n\t\t\t\t\t\t\tox4 = ox5 + ( j4*sx[4] );\n\t\t\t\t\t\t\tfor ( j3 = sh[3]; j3 > 0; ) {\n\t\t\t\t\t\t\t\tif ( j3 < bsize ) {\n\t\t\t\t\t\t\t\t\ts3 = j3;\n\t\t\t\t\t\t\t\t\tj3 = 0;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\ts3 = bsize;\n\t\t\t\t\t\t\t\t\tj3 -= bsize;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdx4 = sx[4] - ( s3*sx[3] );\n\t\t\t\t\t\t\t\tox3 = ox4 + ( j3*sx[3] );\n\t\t\t\t\t\t\t\tfor ( j2 = sh[2]; j2 > 0; ) {\n\t\t\t\t\t\t\t\t\tif ( j2 < bsize ) {\n\t\t\t\t\t\t\t\t\t\ts2 = j2;\n\t\t\t\t\t\t\t\t\t\tj2 = 0;\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\ts2 = bsize;\n\t\t\t\t\t\t\t\t\t\tj2 -= bsize;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tdx3 = sx[3] - ( s2*sx[2] );\n\t\t\t\t\t\t\t\t\tox2 = ox3 + ( j2*sx[2] );\n\t\t\t\t\t\t\t\t\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\t\t\t\t\t\t\t\t\tif ( j1 < bsize ) {\n\t\t\t\t\t\t\t\t\t\t\ts1 = j1;\n\t\t\t\t\t\t\t\t\t\t\tj1 = 0;\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\ts1 = bsize;\n\t\t\t\t\t\t\t\t\t\t\tj1 -= bsize;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tdx2 = sx[2] - ( s1*sx[1] );\n\t\t\t\t\t\t\t\t\t\tox1 = ox2 + ( j1*sx[1] );\n\t\t\t\t\t\t\t\t\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\t\t\t\t\t\t\t\t\tif ( j0 < bsize ) {\n\t\t\t\t\t\t\t\t\t\t\t\ts0 = j0;\n\t\t\t\t\t\t\t\t\t\t\t\tj0 = 0;\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\ts0 = bsize;\n\t\t\t\t\t\t\t\t\t\t\t\tj0 -= bsize;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\t\t\t\t\t\t\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t\t\t\t\t\t\t\t\t// Compute the loop offset increment:\n\t\t\t\t\t\t\t\t\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t\t\t\t\t\t\t\t\t// Iterate over the ndarray dimensions...\n\t\t\t\t\t\t\t\t\t\t\tfor ( i9 = 0; i9 < s9; i9++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\tfor ( i8 = 0; i8 < s8; i8++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i7 = 0; i7 < s7; i7++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i6 = 0; i6 < s6; i6++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i5 = 0; i5 < s5; i5++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i4 = 0; i4 < s4; i4++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i3 = 0; i3 < s3; i3++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i2 = 0; i2 < s2; i2++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif ( get( xbuf, ix ) === value ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn true;\n\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\tix += dx0;\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\t\t\t\t\t\t\t\t\t\t\t\t\t\tix += dx1;\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\t\t\t\t\t\t\t\t\tix += dx2;\n\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\tix += dx3;\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\t\t\t\t\t\t\t\t\t\tix += dx4;\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\t\t\t\t\t\t\tix += dx5;\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\t\t\t\t\t\tix += dx6;\n\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\tix += dx7;\n\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\tix += dx8;\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\tix += dx9;\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\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\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default blockedincludes10d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nimport loopOrder from '@stdlib/ndarray-base-nullary-loop-interchange-order';\nimport blockSize from '@stdlib/ndarray-base-nullary-tiling-block-size';\n\n\n// MAIN //\n\n/**\n* Tests whether a reinterpreted complex number ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {ComplexLike} value - search element\n* @returns {boolean} result\n*\n* @example\n* import Float64Array from '@stdlib/array-float64';\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 4, 2 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'complex128',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var v = {\n* 're': 3.0,\n* 'im': 4.0\n* };\n* var out = blockedincludes2d( x, v );\n* // returns true\n*\n* v = {\n* 're': -3.0,\n* 'im': -4.0\n* };\n* out = blockedincludes2d( x, v );\n* // returns false\n*/\nfunction blockedincludes2d( x, value ) {\n\tvar bsize;\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar ox1;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar j0;\n\tvar j1;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Iterate over blocks...\n\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\tif ( j1 < bsize ) {\n\t\t\ts1 = j1;\n\t\t\tj1 = 0;\n\t\t} else {\n\t\t\ts1 = bsize;\n\t\t\tj1 -= bsize;\n\t\t}\n\t\tox1 = ox + ( j1*sx[1] );\n\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\tif ( j0 < bsize ) {\n\t\t\t\ts0 = j0;\n\t\t\t\tj0 = 0;\n\t\t\t} else {\n\t\t\t\ts0 = bsize;\n\t\t\t\tj0 -= bsize;\n\t\t\t}\n\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t// Compute the loop offset increment:\n\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t// Iterate over the ndarray dimensions...\n\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\tif ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) { // eslint-disable-line max-len\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx0;\n\t\t\t\t}\n\t\t\t\tix += dx1;\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default blockedincludes2d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MODULES //\n\nimport loopOrder from '@stdlib/ndarray-base-nullary-loop-interchange-order';\nimport blockSize from '@stdlib/ndarray-base-nullary-tiling-block-size';\n\n\n// MAIN //\n\n/**\n* Tests whether a reinterpreted complex number ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {ComplexLike} value - search element\n* @returns {boolean} result\n*\n* @example\n* import Float64Array from '@stdlib/array-float64';\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 4, 2 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'complex128',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var v = {\n* 're': 3.0,\n* 'im': 4.0\n* };\n* var out = blockedincludes3d( x, v );\n* // returns true\n*\n* v = {\n* 're': -3.0,\n* 'im': -4.0\n* };\n* out = blockedincludes3d( x, v );\n* // returns false\n*/\nfunction blockedincludes3d( x, value ) {\n\tvar bsize;\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar ox1;\n\tvar ox2;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar s2;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Iterate over blocks...\n\tfor ( j2 = sh[2]; j2 > 0; ) {\n\t\tif ( j2 < bsize ) {\n\t\t\ts2 = j2;\n\t\t\tj2 = 0;\n\t\t} else {\n\t\t\ts2 = bsize;\n\t\t\tj2 -= bsize;\n\t\t}\n\t\tox2 = ox + ( j2*sx[2] );\n\t\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\t\tif ( j1 < bsize ) {\n\t\t\t\ts1 = j1;\n\t\t\t\tj1 = 0;\n\t\t\t} else {\n\t\t\t\ts1 = bsize;\n\t\t\t\tj1 -= bsize;\n\t\t\t}\n\t\t\tdx2 = sx[2] - ( s1*sx[1] );\n\t\t\tox1 = ox2 + ( j1*sx[1] );\n\t\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\t\tif ( j0 < bsize ) {\n\t\t\t\t\ts0 = j0;\n\t\t\t\t\tj0 = 0;\n\t\t\t\t} else {\n\t\t\t\t\ts0 = bsize;\n\t\t\t\t\tj0 -= bsize;\n\t\t\t\t}\n\t\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t\t// Compute the loop offset increment:\n\t\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t\t// Iterate over the ndarray dimensions...\n\t\t\t\tfor ( i2 = 0; i2 < s2; i2++ ) {\n\t\t\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\t\t\tif ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tix += dx1;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx2;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default blockedincludes3d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MODULES //\n\nimport loopOrder from '@stdlib/ndarray-base-nullary-loop-interchange-order';\nimport blockSize from '@stdlib/ndarray-base-nullary-tiling-block-size';\n\n\n// MAIN //\n\n/**\n* Tests whether a reinterpreted complex number ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {ComplexLike} value - search element\n* @returns {boolean} result\n*\n* @example\n* import Float64Array from '@stdlib/array-float64';\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 4, 2 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'complex128',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var v = {\n* 're': 3.0,\n* 'im': 4.0\n* };\n* var out = blockedincludes4d( x, v );\n* // returns true\n*\n* v = {\n* 're': -3.0,\n* 'im': -4.0\n* };\n* out = blockedincludes4d( x, v );\n* // returns false\n*/\nfunction blockedincludes4d( x, value ) {\n\tvar bsize;\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar ox1;\n\tvar ox2;\n\tvar ox3;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar s2;\n\tvar s3;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar j3;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Iterate over blocks...\n\tfor ( j3 = sh[3]; j3 > 0; ) {\n\t\tif ( j3 < bsize ) {\n\t\t\ts3 = j3;\n\t\t\tj3 = 0;\n\t\t} else {\n\t\t\ts3 = bsize;\n\t\t\tj3 -= bsize;\n\t\t}\n\t\tox3 = ox + ( j3*sx[3] );\n\t\tfor ( j2 = sh[2]; j2 > 0; ) {\n\t\t\tif ( j2 < bsize ) {\n\t\t\t\ts2 = j2;\n\t\t\t\tj2 = 0;\n\t\t\t} else {\n\t\t\t\ts2 = bsize;\n\t\t\t\tj2 -= bsize;\n\t\t\t}\n\t\t\tdx3 = sx[3] - ( s2*sx[2] );\n\t\t\tox2 = ox3 + ( j2*sx[2] );\n\t\t\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\t\t\tif ( j1 < bsize ) {\n\t\t\t\t\ts1 = j1;\n\t\t\t\t\tj1 = 0;\n\t\t\t\t} else {\n\t\t\t\t\ts1 = bsize;\n\t\t\t\t\tj1 -= bsize;\n\t\t\t\t}\n\t\t\t\tdx2 = sx[2] - ( s1*sx[1] );\n\t\t\t\tox1 = ox2 + ( j1*sx[1] );\n\t\t\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\t\t\tif ( j0 < bsize ) {\n\t\t\t\t\t\ts0 = j0;\n\t\t\t\t\t\tj0 = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts0 = bsize;\n\t\t\t\t\t\tj0 -= bsize;\n\t\t\t\t\t}\n\t\t\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t\t\t// Compute the loop offset increment:\n\t\t\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t\t\t// Iterate over the ndarray dimensions...\n\t\t\t\t\tfor ( i3 = 0; i3 < s3; i3++ ) {\n\t\t\t\t\t\tfor ( i2 = 0; i2 < s2; i2++ ) {\n\t\t\t\t\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\t\t\t\t\tif ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) {\n\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tix += dx1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tix += dx2;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tix += dx3;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default blockedincludes4d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MODULES //\n\nimport loopOrder from '@stdlib/ndarray-base-nullary-loop-interchange-order';\nimport blockSize from '@stdlib/ndarray-base-nullary-tiling-block-size';\n\n\n// MAIN //\n\n/**\n* Tests whether a reinterpreted complex number ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {ComplexLike} value - search element\n* @returns {boolean} result\n*\n* @example\n* import Float64Array from '@stdlib/array-float64';\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 8, 4, 2 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'complex128',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var v = {\n* 're': 3.0,\n* 'im': 4.0\n* };\n* var out = blockedincludes5d( x, v );\n* // returns true\n*\n* v = {\n* 're': -3.0,\n* 'im': -4.0\n* };\n* out = blockedincludes5d( x, v );\n* // returns false\n*/\nfunction blockedincludes5d( x, value ) {\n\tvar bsize;\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar ox1;\n\tvar ox2;\n\tvar ox3;\n\tvar ox4;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar s2;\n\tvar s3;\n\tvar s4;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar j3;\n\tvar j4;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Iterate over blocks...\n\tfor ( j4 = sh[4]; j4 > 0; ) {\n\t\tif ( j4 < bsize ) {\n\t\t\ts4 = j4;\n\t\t\tj4 = 0;\n\t\t} else {\n\t\t\ts4 = bsize;\n\t\t\tj4 -= bsize;\n\t\t}\n\t\tox4 = ox + ( j4*sx[4] );\n\t\tfor ( j3 = sh[3]; j3 > 0; ) {\n\t\t\tif ( j3 < bsize ) {\n\t\t\t\ts3 = j3;\n\t\t\t\tj3 = 0;\n\t\t\t} else {\n\t\t\t\ts3 = bsize;\n\t\t\t\tj3 -= bsize;\n\t\t\t}\n\t\t\tdx4 = sx[4] - ( s3*sx[3] );\n\t\t\tox3 = ox4 + ( j3*sx[3] );\n\t\t\tfor ( j2 = sh[2]; j2 > 0; ) {\n\t\t\t\tif ( j2 < bsize ) {\n\t\t\t\t\ts2 = j2;\n\t\t\t\t\tj2 = 0;\n\t\t\t\t} else {\n\t\t\t\t\ts2 = bsize;\n\t\t\t\t\tj2 -= bsize;\n\t\t\t\t}\n\t\t\t\tdx3 = sx[3] - ( s2*sx[2] );\n\t\t\t\tox2 = ox3 + ( j2*sx[2] );\n\t\t\t\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\t\t\t\tif ( j1 < bsize ) {\n\t\t\t\t\t\ts1 = j1;\n\t\t\t\t\t\tj1 = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts1 = bsize;\n\t\t\t\t\t\tj1 -= bsize;\n\t\t\t\t\t}\n\t\t\t\t\tdx2 = sx[2] - ( s1*sx[1] );\n\t\t\t\t\tox1 = ox2 + ( j1*sx[1] );\n\t\t\t\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\t\t\t\tif ( j0 < bsize ) {\n\t\t\t\t\t\t\ts0 = j0;\n\t\t\t\t\t\t\tj0 = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ts0 = bsize;\n\t\t\t\t\t\t\tj0 -= bsize;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\t\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t\t\t\t// Compute the loop offset increment:\n\t\t\t\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t\t\t\t// Iterate over the ndarray dimensions...\n\t\t\t\t\t\tfor ( i4 = 0; i4 < s4; i4++ ) {\n\t\t\t\t\t\t\tfor ( i3 = 0; i3 < s3; i3++ ) {\n\t\t\t\t\t\t\t\tfor ( i2 = 0; i2 < s2; i2++ ) {\n\t\t\t\t\t\t\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\t\t\t\t\t\t\tif ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tix += dx0;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tix += dx1;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tix += dx2;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tix += dx3;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tix += dx4;\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\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default blockedincludes5d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MODULES //\n\nimport loopOrder from '@stdlib/ndarray-base-nullary-loop-interchange-order';\nimport blockSize from '@stdlib/ndarray-base-nullary-tiling-block-size';\n\n\n// MAIN //\n\n/**\n* Tests whether a reinterpreted complex number ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {ComplexLike} value - search element\n* @returns {boolean} result\n*\n* @example\n* import Float64Array from '@stdlib/array-float64';\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 8, 8, 4, 2 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'complex128',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var v = {\n* 're': 3.0,\n* 'im': 4.0\n* };\n* var out = blockedincludes6d( x, v );\n* // returns true\n*\n* v = {\n* 're': -3.0,\n* 'im': -4.0\n* };\n* out = blockedincludes6d( x, v );\n* // returns false\n*/\nfunction blockedincludes6d( x, value ) { // eslint-disable-line max-statements\n\tvar bsize;\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar ox1;\n\tvar ox2;\n\tvar ox3;\n\tvar ox4;\n\tvar ox5;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar s2;\n\tvar s3;\n\tvar s4;\n\tvar s5;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar j3;\n\tvar j4;\n\tvar j5;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Iterate over blocks...\n\tfor ( j5 = sh[5]; j5 > 0; ) {\n\t\tif ( j5 < bsize ) {\n\t\t\ts5 = j5;\n\t\t\tj5 = 0;\n\t\t} else {\n\t\t\ts5 = bsize;\n\t\t\tj5 -= bsize;\n\t\t}\n\t\tox5 = ox + ( j5*sx[5] );\n\t\tfor ( j4 = sh[4]; j4 > 0; ) {\n\t\t\tif ( j4 < bsize ) {\n\t\t\t\ts4 = j4;\n\t\t\t\tj4 = 0;\n\t\t\t} else {\n\t\t\t\ts4 = bsize;\n\t\t\t\tj4 -= bsize;\n\t\t\t}\n\t\t\tdx5 = sx[5] - ( s4*sx[4] );\n\t\t\tox4 = ox5 + ( j4*sx[4] );\n\t\t\tfor ( j3 = sh[3]; j3 > 0; ) {\n\t\t\t\tif ( j3 < bsize ) {\n\t\t\t\t\ts3 = j3;\n\t\t\t\t\tj3 = 0;\n\t\t\t\t} else {\n\t\t\t\t\ts3 = bsize;\n\t\t\t\t\tj3 -= bsize;\n\t\t\t\t}\n\t\t\t\tdx4 = sx[4] - ( s3*sx[3] );\n\t\t\t\tox3 = ox4 + ( j3*sx[3] );\n\t\t\t\tfor ( j2 = sh[2]; j2 > 0; ) {\n\t\t\t\t\tif ( j2 < bsize ) {\n\t\t\t\t\t\ts2 = j2;\n\t\t\t\t\t\tj2 = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts2 = bsize;\n\t\t\t\t\t\tj2 -= bsize;\n\t\t\t\t\t}\n\t\t\t\t\tdx3 = sx[3] - ( s2*sx[2] );\n\t\t\t\t\tox2 = ox3 + ( j2*sx[2] );\n\t\t\t\t\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\t\t\t\t\tif ( j1 < bsize ) {\n\t\t\t\t\t\t\ts1 = j1;\n\t\t\t\t\t\t\tj1 = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ts1 = bsize;\n\t\t\t\t\t\t\tj1 -= bsize;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdx2 = sx[2] - ( s1*sx[1] );\n\t\t\t\t\t\tox1 = ox2 + ( j1*sx[1] );\n\t\t\t\t\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\t\t\t\t\tif ( j0 < bsize ) {\n\t\t\t\t\t\t\t\ts0 = j0;\n\t\t\t\t\t\t\t\tj0 = 0;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ts0 = bsize;\n\t\t\t\t\t\t\t\tj0 -= bsize;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\t\t\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t\t\t\t\t// Compute the loop offset increment:\n\t\t\t\t\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t\t\t\t\t// Iterate over the ndarray dimensions...\n\t\t\t\t\t\t\tfor ( i5 = 0; i5 < s5; i5++ ) {\n\t\t\t\t\t\t\t\tfor ( i4 = 0; i4 < s4; i4++ ) {\n\t\t\t\t\t\t\t\t\tfor ( i3 = 0; i3 < s3; i3++ ) {\n\t\t\t\t\t\t\t\t\t\tfor ( i2 = 0; i2 < s2; i2++ ) {\n\t\t\t\t\t\t\t\t\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tif ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn true;\n\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\tix += dx0;\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\tix += dx1;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tix += dx2;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tix += dx3;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tix += dx4;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tix += dx5;\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}\n\t\t}\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default blockedincludes6d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MODULES //\n\nimport loopOrder from '@stdlib/ndarray-base-nullary-loop-interchange-order';\nimport blockSize from '@stdlib/ndarray-base-nullary-tiling-block-size';\n\n\n// MAIN //\n\n/**\n* Tests whether a reinterpreted complex number ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {ComplexLike} value - search element\n* @returns {boolean} result\n*\n* @example\n* import Float64Array from '@stdlib/array-float64';\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 8, 8, 8, 4, 2 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'complex128',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var v = {\n* 're': 3.0,\n* 'im': 4.0\n* };\n* var out = blockedincludes7d( x, v );\n* // returns true\n*\n* v = {\n* 're': -3.0,\n* 'im': -4.0\n* };\n* out = blockedincludes7d( x, v );\n* // returns false\n*/\nfunction blockedincludes7d( x, value ) { // eslint-disable-line max-statements\n\tvar bsize;\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar dx6;\n\tvar ox1;\n\tvar ox2;\n\tvar ox3;\n\tvar ox4;\n\tvar ox5;\n\tvar ox6;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar s2;\n\tvar s3;\n\tvar s4;\n\tvar s5;\n\tvar s6;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar i6;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar j3;\n\tvar j4;\n\tvar j5;\n\tvar j6;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Iterate over blocks...\n\tfor ( j6 = sh[6]; j6 > 0; ) {\n\t\tif ( j6 < bsize ) {\n\t\t\ts6 = j6;\n\t\t\tj6 = 0;\n\t\t} else {\n\t\t\ts6 = bsize;\n\t\t\tj6 -= bsize;\n\t\t}\n\t\tox6 = ox + ( j6*sx[6] );\n\t\tfor ( j5 = sh[5]; j5 > 0; ) {\n\t\t\tif ( j5 < bsize ) {\n\t\t\t\ts5 = j5;\n\t\t\t\tj5 = 0;\n\t\t\t} else {\n\t\t\t\ts5 = bsize;\n\t\t\t\tj5 -= bsize;\n\t\t\t}\n\t\t\tdx6 = sx[6] - ( s5*sx[5] );\n\t\t\tox5 = ox6 + ( j5*sx[5] );\n\t\t\tfor ( j4 = sh[4]; j4 > 0; ) {\n\t\t\t\tif ( j4 < bsize ) {\n\t\t\t\t\ts4 = j4;\n\t\t\t\t\tj4 = 0;\n\t\t\t\t} else {\n\t\t\t\t\ts4 = bsize;\n\t\t\t\t\tj4 -= bsize;\n\t\t\t\t}\n\t\t\t\tdx5 = sx[5] - ( s4*sx[4] );\n\t\t\t\tox4 = ox5 + ( j4*sx[4] );\n\t\t\t\tfor ( j3 = sh[3]; j3 > 0; ) {\n\t\t\t\t\tif ( j3 < bsize ) {\n\t\t\t\t\t\ts3 = j3;\n\t\t\t\t\t\tj3 = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts3 = bsize;\n\t\t\t\t\t\tj3 -= bsize;\n\t\t\t\t\t}\n\t\t\t\t\tdx4 = sx[4] - ( s3*sx[3] );\n\t\t\t\t\tox3 = ox4 + ( j3*sx[3] );\n\t\t\t\t\tfor ( j2 = sh[2]; j2 > 0; ) {\n\t\t\t\t\t\tif ( j2 < bsize ) {\n\t\t\t\t\t\t\ts2 = j2;\n\t\t\t\t\t\t\tj2 = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ts2 = bsize;\n\t\t\t\t\t\t\tj2 -= bsize;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdx3 = sx[3] - ( s2*sx[2] );\n\t\t\t\t\t\tox2 = ox3 + ( j2*sx[2] );\n\t\t\t\t\t\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\t\t\t\t\t\tif ( j1 < bsize ) {\n\t\t\t\t\t\t\t\ts1 = j1;\n\t\t\t\t\t\t\t\tj1 = 0;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ts1 = bsize;\n\t\t\t\t\t\t\t\tj1 -= bsize;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdx2 = sx[2] - ( s1*sx[1] );\n\t\t\t\t\t\t\tox1 = ox2 + ( j1*sx[1] );\n\t\t\t\t\t\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\t\t\t\t\t\tif ( j0 < bsize ) {\n\t\t\t\t\t\t\t\t\ts0 = j0;\n\t\t\t\t\t\t\t\t\tj0 = 0;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\ts0 = bsize;\n\t\t\t\t\t\t\t\t\tj0 -= bsize;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\t\t\t\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t\t\t\t\t\t// Compute the loop offset increment:\n\t\t\t\t\t\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t\t\t\t\t\t// Iterate over the ndarray dimensions...\n\t\t\t\t\t\t\t\tfor ( i6 = 0; i6 < s6; i6++ ) {\n\t\t\t\t\t\t\t\t\tfor ( i5 = 0; i5 < s5; i5++ ) {\n\t\t\t\t\t\t\t\t\t\tfor ( i4 = 0; i4 < s4; i4++ ) {\n\t\t\t\t\t\t\t\t\t\t\tfor ( i3 = 0; i3 < s3; i3++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\tfor ( i2 = 0; i2 < s2; i2++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn true;\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\t\t\t\t\t\tix += dx0;\n\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\tix += dx1;\n\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\tix += dx2;\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\tix += dx3;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tix += dx4;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tix += dx5;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tix += dx6;\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}\n\t\t}\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default blockedincludes7d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MODULES //\n\nimport loopOrder from '@stdlib/ndarray-base-nullary-loop-interchange-order';\nimport blockSize from '@stdlib/ndarray-base-nullary-tiling-block-size';\n\n\n// MAIN //\n\n/**\n* Tests whether a reinterpreted complex number ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {ComplexLike} value - search element\n* @returns {boolean} result\n*\n* @example\n* import Float64Array from '@stdlib/array-float64';\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 8, 8, 8, 8, 4, 2 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'complex128',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var v = {\n* 're': 3.0,\n* 'im': 4.0\n* };\n* var out = blockedincludes8d( x, v );\n* // returns true\n*\n* v = {\n* 're': -3.0,\n* 'im': -4.0\n* };\n* out = blockedincludes8d( x, v );\n* // returns false\n*/\nfunction blockedincludes8d( x, value ) { // eslint-disable-line max-statements\n\tvar bsize;\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar dx6;\n\tvar dx7;\n\tvar ox1;\n\tvar ox2;\n\tvar ox3;\n\tvar ox4;\n\tvar ox5;\n\tvar ox6;\n\tvar ox7;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar s2;\n\tvar s3;\n\tvar s4;\n\tvar s5;\n\tvar s6;\n\tvar s7;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar i6;\n\tvar i7;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar j3;\n\tvar j4;\n\tvar j5;\n\tvar j6;\n\tvar j7;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Iterate over blocks...\n\tfor ( j7 = sh[7]; j7 > 0; ) {\n\t\tif ( j7 < bsize ) {\n\t\t\ts7 = j7;\n\t\t\tj7 = 0;\n\t\t} else {\n\t\t\ts7 = bsize;\n\t\t\tj7 -= bsize;\n\t\t}\n\t\tox7 = ox + ( j7*sx[7] );\n\t\tfor ( j6 = sh[6]; j6 > 0; ) {\n\t\t\tif ( j6 < bsize ) {\n\t\t\t\ts6 = j6;\n\t\t\t\tj6 = 0;\n\t\t\t} else {\n\t\t\t\ts6 = bsize;\n\t\t\t\tj6 -= bsize;\n\t\t\t}\n\t\t\tdx7 = sx[7] - ( s6*sx[6] );\n\t\t\tox6 = ox7 + ( j6*sx[6] );\n\t\t\tfor ( j5 = sh[5]; j5 > 0; ) {\n\t\t\t\tif ( j5 < bsize ) {\n\t\t\t\t\ts5 = j5;\n\t\t\t\t\tj5 = 0;\n\t\t\t\t} else {\n\t\t\t\t\ts5 = bsize;\n\t\t\t\t\tj5 -= bsize;\n\t\t\t\t}\n\t\t\t\tdx6 = sx[6] - ( s5*sx[5] );\n\t\t\t\tox5 = ox6 + ( j5*sx[5] );\n\t\t\t\tfor ( j4 = sh[4]; j4 > 0; ) {\n\t\t\t\t\tif ( j4 < bsize ) {\n\t\t\t\t\t\ts4 = j4;\n\t\t\t\t\t\tj4 = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts4 = bsize;\n\t\t\t\t\t\tj4 -= bsize;\n\t\t\t\t\t}\n\t\t\t\t\tdx5 = sx[5] - ( s4*sx[4] );\n\t\t\t\t\tox4 = ox5 + ( j4*sx[4] );\n\t\t\t\t\tfor ( j3 = sh[3]; j3 > 0; ) {\n\t\t\t\t\t\tif ( j3 < bsize ) {\n\t\t\t\t\t\t\ts3 = j3;\n\t\t\t\t\t\t\tj3 = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ts3 = bsize;\n\t\t\t\t\t\t\tj3 -= bsize;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdx4 = sx[4] - ( s3*sx[3] );\n\t\t\t\t\t\tox3 = ox4 + ( j3*sx[3] );\n\t\t\t\t\t\tfor ( j2 = sh[2]; j2 > 0; ) {\n\t\t\t\t\t\t\tif ( j2 < bsize ) {\n\t\t\t\t\t\t\t\ts2 = j2;\n\t\t\t\t\t\t\t\tj2 = 0;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ts2 = bsize;\n\t\t\t\t\t\t\t\tj2 -= bsize;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdx3 = sx[3] - ( s2*sx[2] );\n\t\t\t\t\t\t\tox2 = ox3 + ( j2*sx[2] );\n\t\t\t\t\t\t\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\t\t\t\t\t\t\tif ( j1 < bsize ) {\n\t\t\t\t\t\t\t\t\ts1 = j1;\n\t\t\t\t\t\t\t\t\tj1 = 0;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\ts1 = bsize;\n\t\t\t\t\t\t\t\t\tj1 -= bsize;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdx2 = sx[2] - ( s1*sx[1] );\n\t\t\t\t\t\t\t\tox1 = ox2 + ( j1*sx[1] );\n\t\t\t\t\t\t\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\t\t\t\t\t\t\tif ( j0 < bsize ) {\n\t\t\t\t\t\t\t\t\t\ts0 = j0;\n\t\t\t\t\t\t\t\t\t\tj0 = 0;\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\ts0 = bsize;\n\t\t\t\t\t\t\t\t\t\tj0 -= bsize;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\t\t\t\t\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t\t\t\t\t\t\t// Compute the loop offset increment:\n\t\t\t\t\t\t\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t\t\t\t\t\t\t// Iterate over the ndarray dimensions...\n\t\t\t\t\t\t\t\t\tfor ( i7 = 0; i7 < s7; i7++ ) {\n\t\t\t\t\t\t\t\t\t\tfor ( i6 = 0; i6 < s6; i6++ ) {\n\t\t\t\t\t\t\t\t\t\t\tfor ( i5 = 0; i5 < s5; i5++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\tfor ( i4 = 0; i4 < s4; i4++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i3 = 0; i3 < s3; i3++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i2 = 0; i2 < s2; i2++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn true;\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\t\t\t\t\t\t\t\t\t\tix += dx0;\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\t\t\t\t\t\t\tix += dx1;\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\t\t\t\t\t\tix += dx2;\n\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\tix += dx3;\n\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\tix += dx4;\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\tix += dx5;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tix += dx6;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tix += dx7;\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}\n\t\t}\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default blockedincludes8d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MODULES //\n\nimport loopOrder from '@stdlib/ndarray-base-nullary-loop-interchange-order';\nimport blockSize from '@stdlib/ndarray-base-nullary-tiling-block-size';\n\n\n// MAIN //\n\n/**\n* Tests whether a reinterpreted complex number ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {ComplexLike} value - search element\n* @returns {boolean} result\n*\n* @example\n* import Float64Array from '@stdlib/array-float64';\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 1, 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 8, 8, 8, 8, 8, 4, 2 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'complex128',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var v = {\n* 're': 3.0,\n* 'im': 4.0\n* };\n* var out = blockedincludes9d( x, v );\n* // returns true\n*\n* v = {\n* 're': -3.0,\n* 'im': -4.0\n* };\n* out = blockedincludes9d( x, v );\n* // returns false\n*/\nfunction blockedincludes9d( x, value ) { // eslint-disable-line max-statements\n\tvar bsize;\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar dx6;\n\tvar dx7;\n\tvar dx8;\n\tvar ox1;\n\tvar ox2;\n\tvar ox3;\n\tvar ox4;\n\tvar ox5;\n\tvar ox6;\n\tvar ox7;\n\tvar ox8;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar s2;\n\tvar s3;\n\tvar s4;\n\tvar s5;\n\tvar s6;\n\tvar s7;\n\tvar s8;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar i6;\n\tvar i7;\n\tvar i8;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar j3;\n\tvar j4;\n\tvar j5;\n\tvar j6;\n\tvar j7;\n\tvar j8;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Iterate over blocks...\n\tfor ( j8 = sh[8]; j8 > 0; ) {\n\t\tif ( j8 < bsize ) {\n\t\t\ts8 = j8;\n\t\t\tj8 = 0;\n\t\t} else {\n\t\t\ts8 = bsize;\n\t\t\tj8 -= bsize;\n\t\t}\n\t\tox8 = ox + ( j8*sx[8] );\n\t\tfor ( j7 = sh[7]; j7 > 0; ) {\n\t\t\tif ( j7 < bsize ) {\n\t\t\t\ts7 = j7;\n\t\t\t\tj7 = 0;\n\t\t\t} else {\n\t\t\t\ts7 = bsize;\n\t\t\t\tj7 -= bsize;\n\t\t\t}\n\t\t\tdx8 = sx[8] - ( s7*sx[7] );\n\t\t\tox7 = ox8 + ( j7*sx[7] );\n\t\t\tfor ( j6 = sh[6]; j6 > 0; ) {\n\t\t\t\tif ( j6 < bsize ) {\n\t\t\t\t\ts6 = j6;\n\t\t\t\t\tj6 = 0;\n\t\t\t\t} else {\n\t\t\t\t\ts6 = bsize;\n\t\t\t\t\tj6 -= bsize;\n\t\t\t\t}\n\t\t\t\tdx7 = sx[7] - ( s6*sx[6] );\n\t\t\t\tox6 = ox7 + ( j6*sx[6] );\n\t\t\t\tfor ( j5 = sh[5]; j5 > 0; ) {\n\t\t\t\t\tif ( j5 < bsize ) {\n\t\t\t\t\t\ts5 = j5;\n\t\t\t\t\t\tj5 = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts5 = bsize;\n\t\t\t\t\t\tj5 -= bsize;\n\t\t\t\t\t}\n\t\t\t\t\tdx6 = sx[6] - ( s5*sx[5] );\n\t\t\t\t\tox5 = ox6 + ( j5*sx[5] );\n\t\t\t\t\tfor ( j4 = sh[4]; j4 > 0; ) {\n\t\t\t\t\t\tif ( j4 < bsize ) {\n\t\t\t\t\t\t\ts4 = j4;\n\t\t\t\t\t\t\tj4 = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ts4 = bsize;\n\t\t\t\t\t\t\tj4 -= bsize;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdx5 = sx[5] - ( s4*sx[4] );\n\t\t\t\t\t\tox4 = ox5 + ( j4*sx[4] );\n\t\t\t\t\t\tfor ( j3 = sh[3]; j3 > 0; ) {\n\t\t\t\t\t\t\tif ( j3 < bsize ) {\n\t\t\t\t\t\t\t\ts3 = j3;\n\t\t\t\t\t\t\t\tj3 = 0;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ts3 = bsize;\n\t\t\t\t\t\t\t\tj3 -= bsize;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdx4 = sx[4] - ( s3*sx[3] );\n\t\t\t\t\t\t\tox3 = ox4 + ( j3*sx[3] );\n\t\t\t\t\t\t\tfor ( j2 = sh[2]; j2 > 0; ) {\n\t\t\t\t\t\t\t\tif ( j2 < bsize ) {\n\t\t\t\t\t\t\t\t\ts2 = j2;\n\t\t\t\t\t\t\t\t\tj2 = 0;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\ts2 = bsize;\n\t\t\t\t\t\t\t\t\tj2 -= bsize;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdx3 = sx[3] - ( s2*sx[2] );\n\t\t\t\t\t\t\t\tox2 = ox3 + ( j2*sx[2] );\n\t\t\t\t\t\t\t\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\t\t\t\t\t\t\t\tif ( j1 < bsize ) {\n\t\t\t\t\t\t\t\t\t\ts1 = j1;\n\t\t\t\t\t\t\t\t\t\tj1 = 0;\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\ts1 = bsize;\n\t\t\t\t\t\t\t\t\t\tj1 -= bsize;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tdx2 = sx[2] - ( s1*sx[1] );\n\t\t\t\t\t\t\t\t\tox1 = ox2 + ( j1*sx[1] );\n\t\t\t\t\t\t\t\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\t\t\t\t\t\t\t\tif ( j0 < bsize ) {\n\t\t\t\t\t\t\t\t\t\t\ts0 = j0;\n\t\t\t\t\t\t\t\t\t\t\tj0 = 0;\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\ts0 = bsize;\n\t\t\t\t\t\t\t\t\t\t\tj0 -= bsize;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\t\t\t\t\t\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t\t\t\t\t\t\t\t// Compute the loop offset increment:\n\t\t\t\t\t\t\t\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t\t\t\t\t\t\t\t// Iterate over the ndarray dimensions...\n\t\t\t\t\t\t\t\t\t\tfor ( i8 = 0; i8 < s8; i8++ ) {\n\t\t\t\t\t\t\t\t\t\t\tfor ( i7 = 0; i7 < s7; i7++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\tfor ( i6 = 0; i6 < s6; i6++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i5 = 0; i5 < s5; i5++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i4 = 0; i4 < s4; i4++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i3 = 0; i3 < s3; i3++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i2 = 0; i2 < s2; i2++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn true;\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\t\t\t\t\t\t\t\t\tix += dx0;\n\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\tix += dx1;\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\t\t\t\t\t\t\t\t\t\tix += dx2;\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\t\t\t\t\t\t\tix += dx3;\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\t\t\t\t\t\tix += dx4;\n\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\tix += dx5;\n\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\tix += dx6;\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\tix += dx7;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tix += dx8;\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}\n\t\t}\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default blockedincludes9d;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2025 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MODULES //\n\nimport loopOrder from '@stdlib/ndarray-base-nullary-loop-interchange-order';\nimport blockSize from '@stdlib/ndarray-base-nullary-tiling-block-size';\n\n\n// MAIN //\n\n/**\n* Tests whether a reinterpreted complex number ndarray contains a specified value via loop blocking.\n*\n* @private\n* @param {Object} x - object containing ndarray meta data\n* @param {*} x.dtype - data type\n* @param {Collection} x.data - data buffer\n* @param {NonNegativeIntegerArray} x.shape - dimensions\n* @param {IntegerArray} x.strides - stride lengths\n* @param {NonNegativeInteger} x.offset - index offset\n* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style)\n* @param {ComplexLike} value - search element\n* @returns {boolean} result\n*\n* @example\n* import Float64Array from '@stdlib/array-float64';\n*\n* // Create a data buffer:\n* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );\n*\n* // Define the shape of the input array:\n* var shape = [ 1, 1, 1, 1, 1, 1, 1, 1, 2, 2 ];\n*\n* // Define the array strides:\n* var sx = [ 8, 8, 8, 8, 8, 8, 8, 8, 4, 2 ];\n*\n* // Define the index offset:\n* var ox = 0;\n*\n* // Create the input ndarray-like object:\n* var x = {\n* 'dtype': 'complex128',\n* 'data': xbuf,\n* 'shape': shape,\n* 'strides': sx,\n* 'offset': ox,\n* 'order': 'row-major'\n* };\n*\n* // Perform reduction:\n* var v = {\n* 're': 3.0,\n* 'im': 4.0\n* };\n* var out = blockedincludes10d( x, v );\n* // returns true\n*\n* v = {\n* 're': -3.0,\n* 'im': -4.0\n* };\n* out = blockedincludes10d( x, v );\n* // returns false\n*/\nfunction blockedincludes10d( x, value ) { // eslint-disable-line max-statements, max-lines-per-function\n\tvar bsize;\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar dx6;\n\tvar dx7;\n\tvar dx8;\n\tvar dx9;\n\tvar ox1;\n\tvar ox2;\n\tvar ox3;\n\tvar ox4;\n\tvar ox5;\n\tvar ox6;\n\tvar ox7;\n\tvar ox8;\n\tvar ox9;\n\tvar sh;\n\tvar s0;\n\tvar s1;\n\tvar s2;\n\tvar s3;\n\tvar s4;\n\tvar s5;\n\tvar s6;\n\tvar s7;\n\tvar s8;\n\tvar s9;\n\tvar sx;\n\tvar ox;\n\tvar ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\tvar i6;\n\tvar i7;\n\tvar i8;\n\tvar i9;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar j3;\n\tvar j4;\n\tvar j5;\n\tvar j6;\n\tvar j7;\n\tvar j8;\n\tvar j9;\n\tvar o;\n\n\t// Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...\n\n\t// Resolve the loop interchange order:\n\to = loopOrder( x.shape, x.strides );\n\tsh = o.sh;\n\tsx = o.sx;\n\n\t// Determine the block size:\n\tbsize = blockSize( x.dtype );\n\n\t// Set a pointer to the first indexed element:\n\tox = x.offset;\n\n\t// Cache a reference to the input ndarray buffer:\n\txbuf = x.data;\n\n\t// Cache the offset increment for the innermost loop:\n\tdx0 = sx[0];\n\n\t// Iterate over blocks...\n\tfor ( j9 = sh[9]; j9 > 0; ) {\n\t\tif ( j9 < bsize ) {\n\t\t\ts9 = j9;\n\t\t\tj9 = 0;\n\t\t} else {\n\t\t\ts9 = bsize;\n\t\t\tj9 -= bsize;\n\t\t}\n\t\tox9 = ox + ( j9*sx[9] );\n\t\tfor ( j8 = sh[8]; j8 > 0; ) {\n\t\t\tif ( j8 < bsize ) {\n\t\t\t\ts8 = j8;\n\t\t\t\tj8 = 0;\n\t\t\t} else {\n\t\t\t\ts8 = bsize;\n\t\t\t\tj8 -= bsize;\n\t\t\t}\n\t\t\tdx9 = sx[9] - ( s8*sx[8] );\n\t\t\tox8 = ox9 + ( j8*sx[8] );\n\t\t\tfor ( j7 = sh[7]; j7 > 0; ) {\n\t\t\t\tif ( j7 < bsize ) {\n\t\t\t\t\ts7 = j7;\n\t\t\t\t\tj7 = 0;\n\t\t\t\t} else {\n\t\t\t\t\ts7 = bsize;\n\t\t\t\t\tj7 -= bsize;\n\t\t\t\t}\n\t\t\t\tdx8 = sx[8] - ( s7*sx[7] );\n\t\t\t\tox7 = ox8 + ( j7*sx[7] );\n\t\t\t\tfor ( j6 = sh[6]; j6 > 0; ) {\n\t\t\t\t\tif ( j6 < bsize ) {\n\t\t\t\t\t\ts6 = j6;\n\t\t\t\t\t\tj6 = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts6 = bsize;\n\t\t\t\t\t\tj6 -= bsize;\n\t\t\t\t\t}\n\t\t\t\t\tdx7 = sx[7] - ( s6*sx[6] );\n\t\t\t\t\tox6 = ox7 + ( j6*sx[6] );\n\t\t\t\t\tfor ( j5 = sh[5]; j5 > 0; ) {\n\t\t\t\t\t\tif ( j5 < bsize ) {\n\t\t\t\t\t\t\ts5 = j5;\n\t\t\t\t\t\t\tj5 = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ts5 = bsize;\n\t\t\t\t\t\t\tj5 -= bsize;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdx6 = sx[6] - ( s5*sx[5] );\n\t\t\t\t\t\tox5 = ox6 + ( j5*sx[5] );\n\t\t\t\t\t\tfor ( j4 = sh[4]; j4 > 0; ) {\n\t\t\t\t\t\t\tif ( j4 < bsize ) {\n\t\t\t\t\t\t\t\ts4 = j4;\n\t\t\t\t\t\t\t\tj4 = 0;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ts4 = bsize;\n\t\t\t\t\t\t\t\tj4 -= bsize;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdx5 = sx[5] - ( s4*sx[4] );\n\t\t\t\t\t\t\tox4 = ox5 + ( j4*sx[4] );\n\t\t\t\t\t\t\tfor ( j3 = sh[3]; j3 > 0; ) {\n\t\t\t\t\t\t\t\tif ( j3 < bsize ) {\n\t\t\t\t\t\t\t\t\ts3 = j3;\n\t\t\t\t\t\t\t\t\tj3 = 0;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\ts3 = bsize;\n\t\t\t\t\t\t\t\t\tj3 -= bsize;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdx4 = sx[4] - ( s3*sx[3] );\n\t\t\t\t\t\t\t\tox3 = ox4 + ( j3*sx[3] );\n\t\t\t\t\t\t\t\tfor ( j2 = sh[2]; j2 > 0; ) {\n\t\t\t\t\t\t\t\t\tif ( j2 < bsize ) {\n\t\t\t\t\t\t\t\t\t\ts2 = j2;\n\t\t\t\t\t\t\t\t\t\tj2 = 0;\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\ts2 = bsize;\n\t\t\t\t\t\t\t\t\t\tj2 -= bsize;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tdx3 = sx[3] - ( s2*sx[2] );\n\t\t\t\t\t\t\t\t\tox2 = ox3 + ( j2*sx[2] );\n\t\t\t\t\t\t\t\t\tfor ( j1 = sh[1]; j1 > 0; ) {\n\t\t\t\t\t\t\t\t\t\tif ( j1 < bsize ) {\n\t\t\t\t\t\t\t\t\t\t\ts1 = j1;\n\t\t\t\t\t\t\t\t\t\t\tj1 = 0;\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\ts1 = bsize;\n\t\t\t\t\t\t\t\t\t\t\tj1 -= bsize;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tdx2 = sx[2] - ( s1*sx[1] );\n\t\t\t\t\t\t\t\t\t\tox1 = ox2 + ( j1*sx[1] );\n\t\t\t\t\t\t\t\t\t\tfor ( j0 = sh[0]; j0 > 0; ) {\n\t\t\t\t\t\t\t\t\t\t\tif ( j0 < bsize ) {\n\t\t\t\t\t\t\t\t\t\t\t\ts0 = j0;\n\t\t\t\t\t\t\t\t\t\t\t\tj0 = 0;\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\ts0 = bsize;\n\t\t\t\t\t\t\t\t\t\t\t\tj0 -= bsize;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t// Compute the index offset for the first input ndarray element in the current block:\n\t\t\t\t\t\t\t\t\t\t\tix = ox1 + ( j0*sx[0] );\n\n\t\t\t\t\t\t\t\t\t\t\t// Compute the loop offset increment:\n\t\t\t\t\t\t\t\t\t\t\tdx1 = sx[1] - ( s0*sx[0] );\n\n\t\t\t\t\t\t\t\t\t\t\t// Iterate over the ndarray dimensions...\n\t\t\t\t\t\t\t\t\t\t\tfor ( i9 = 0; i9 < s9; i9++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\tfor ( i8 = 0; i8 < s8; i8++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i7 = 0; i7 < s7; i7++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i6 = 0; i6 < s6; i6++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i5 = 0; i5 < s5; i5++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i4 = 0; i4 < s4; i4++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i3 = 0; i3 < s3; i3++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i2 = 0; i2 < s2; i2++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i1 = 0; i1 < s1; i1++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor ( i0 = 0; i0 < s0; i0++ ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn true;\n\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\tix += dx0;\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\t\t\t\t\t\t\t\t\t\t\t\t\t\tix += dx1;\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\t\t\t\t\t\t\t\t\tix += dx2;\n\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\tix += dx3;\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\t\t\t\t\t\t\t\t\t\tix += dx4;\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\t\t\t\t\t\t\tix += dx5;\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\t\t\t\t\t\tix += dx6;\n\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\tix += dx7;\n\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\tix += dx8;\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\tix += dx9;\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\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\treturn false;\n}\n\n\n// EXPORTS //\n\nexport default blockedincludes10d;\n"],"names":["MODE","INCLUDES","x","value","data","offset","xbuf","dx0","S0","ix","i0","shape","strides","dx1","sh","S1","sx","i1","strides2order","dx2","S2","i2","dx3","S3","i3","dx4","S4","i4","dx5","S5","i5","dx6","S6","i6","dx7","S7","i7","dx8","S8","i8","dx9","S9","i9","ACCESSOR_INCLUDES","accessors","get","COMPLEX_INCLUDES","re","im","BLOCKED_INCLUDES","bsize","ox1","s0","s1","ox","j0","j1","o","loopOrder","blockSize","dtype","ox2","s2","j2","ox3","s3","j3","ox4","s4","j4","ox5","s5","j5","ox6","s6","j6","ox7","s7","j7","ox8","s8","j8","ox9","s9","j9","BLOCKED_ACCESSOR_INCLUDES","BLOCKED_COMPLEX_INCLUDES","MAX_DIMS","length","includes","arrays","isCmplx","ndims","xmmv","shx","iox","len","ns","d","i","ndarray2object","isBooleanArray","isBoolean","reinterpretBoolean","accessorProtocol","isComplexArray","isComplexLike","real","imag","reinterpretComplex","gscal","iterationOrder","minmaxViewBufferIndex","ordx","numel","order","vind2bind","accessorincludesnd","complexincludesnd","includesnd"],"mappings":"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"} \ No newline at end of file diff --git a/lib/0d.js b/lib/0d.js deleted file mode 100644 index 8a5642a..0000000 --- a/lib/0d.js +++ /dev/null @@ -1,76 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MAIN // - -/** -* Tests whether an ndarray contains a specified value. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {*} value - search element -* @returns {boolean} result -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* // Create a data buffer: -* var xbuf = new Float64Array( [ 1.0, 2.0 ] ); -* -* // Define the shape of the input array: -* var shape = []; -* -* // Define the array strides: -* var sx = [ 0 ]; -* -* // Define the index offset: -* var ox = 1; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'float64', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major' -* }; -* -* // Perform reduction: -* var out = includes0d( x, 2.0 ); -* // returns true -* -* out = includes0d( x, 100.0 ); -* // returns false -*/ -function includes0d( x, value ) { - return ( x.data[ x.offset ] === value ); -} - - -// EXPORTS // - -module.exports = includes0d; diff --git a/lib/0d_accessors.js b/lib/0d_accessors.js deleted file mode 100644 index a74d950..0000000 --- a/lib/0d_accessors.js +++ /dev/null @@ -1,79 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MAIN // - -/** -* Tests whether an ndarray contains a specified value. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {Array} x.accessors - data buffer accessors -* @param {*} value - search element -* @returns {boolean} result -* -* @example -* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -* var accessors = require( '@stdlib/array-base-accessors' ); -* -* // Create a data buffer: -* var xbuf = toAccessorArray( [ 1.0, 2.0 ] ); -* -* // Define the shape of the input array: -* var shape = []; -* -* // Define the array strides: -* var sx = [ 0 ]; -* -* // Define the index offset: -* var ox = 1; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'generic', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major', -* 'accessors': accessors( xbuf ).accessors -* }; -* -* // Perform reduction: -* var out = includes0d( x, 2.0 ); -* // returns true -* -* out = includes0d( x, 100.0 ); -* // returns false -*/ -function includes0d( x, value ) { - return ( x.accessors[ 0 ]( x.data, x.offset ) === value ); -} - - -// EXPORTS // - -module.exports = includes0d; diff --git a/lib/0d_complex.js b/lib/0d_complex.js deleted file mode 100644 index 1a977dd..0000000 --- a/lib/0d_complex.js +++ /dev/null @@ -1,84 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MAIN // - -/** -* Tests whether a reinterpreted complex number ndarray contains a specified value. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {ComplexLike} value - search element -* @returns {boolean} result -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* // Create a data buffer: -* var xbuf = new Float64Array( [ 1.0, 2.0 ] ); -* -* // Define the shape of the input array: -* var shape = []; -* -* // Define the array strides: -* var sx = [ 0 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'complex128', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major' -* }; -* -* // Perform reduction: -* var v = { -* 're': 1.0, -* 'im': 2.0 -* }; -* var out = includes0d( x, v ); -* // returns true -* -* v = { -* 're': -3.0, -* 'im': -4.0 -* }; -* out = includes0d( x, v ); -* // returns false -*/ -function includes0d( x, value ) { - return ( x.data[ x.offset ] === value.re && x.data[ x.offset+1 ] === value.im ); // eslint-disable-line max-len -} - - -// EXPORTS // - -module.exports = includes0d; diff --git a/lib/10d.js b/lib/10d.js deleted file mode 100644 index 2612dd5..0000000 --- a/lib/10d.js +++ /dev/null @@ -1,208 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -/* eslint-disable max-depth */ - -'use strict'; - -// MODULES // - -var strides2order = require( '@stdlib/ndarray-base-strides2order' ); - - -// MAIN // - -/** -* Tests whether an ndarray contains a specified value. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {*} value - search element -* @returns {boolean} result -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* // Create a data buffer: -* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 1, 1, 1, 1, 1, 1, 1, 3, 1, 2 ]; -* -* // Define the array strides: -* var sx = [ 12, 12, 12, 12, 12, 12, 12, 4, 4, 1 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'float64', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major' -* }; -* -* // Perform reduction: -* var out = includes10d( x, 6.0 ); -* // returns true -* -* out = includes10d( x, 100.0 ); -* // returns false -*/ -function includes10d( x, value ) { // eslint-disable-line max-statements - var xbuf; - var dx0; - var dx1; - var dx2; - var dx3; - var dx4; - var dx5; - var dx6; - var dx7; - var dx8; - var dx9; - var sh; - var S0; - var S1; - var S2; - var S3; - var S4; - var S5; - var S6; - var S7; - var S8; - var S9; - var sx; - var ix; - var i0; - var i1; - var i2; - var i3; - var i4; - var i5; - var i6; - var i7; - var i8; - var i9; - - // Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop... - - // Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments... - sh = x.shape; - sx = x.strides; - if ( strides2order( sx ) === 1 ) { - // For row-major ndarrays, the last dimensions have the fastest changing indices... - S0 = sh[ 9 ]; - S1 = sh[ 8 ]; - S2 = sh[ 7 ]; - S3 = sh[ 6 ]; - S4 = sh[ 5 ]; - S5 = sh[ 4 ]; - S6 = sh[ 3 ]; - S7 = sh[ 2 ]; - S8 = sh[ 1 ]; - S9 = sh[ 0 ]; - dx0 = sx[ 9 ]; // offset increment for innermost loop - dx1 = sx[ 8 ] - ( S0*sx[9] ); - dx2 = sx[ 7 ] - ( S1*sx[8] ); - dx3 = sx[ 6 ] - ( S2*sx[7] ); - dx4 = sx[ 5 ] - ( S3*sx[6] ); - dx5 = sx[ 4 ] - ( S4*sx[5] ); - dx6 = sx[ 3 ] - ( S5*sx[4] ); - dx7 = sx[ 2 ] - ( S6*sx[3] ); - dx8 = sx[ 1 ] - ( S7*sx[2] ); - dx9 = sx[ 0 ] - ( S8*sx[1] ); // offset increment for outermost loop - } else { // order === 'column-major' - // For column-major ndarrays, the first dimensions have the fastest changing indices... - S0 = sh[ 0 ]; - S1 = sh[ 1 ]; - S2 = sh[ 2 ]; - S3 = sh[ 3 ]; - S4 = sh[ 4 ]; - S5 = sh[ 5 ]; - S6 = sh[ 6 ]; - S7 = sh[ 7 ]; - S8 = sh[ 8 ]; - S9 = sh[ 9 ]; - dx0 = sx[ 0 ]; // offset increment for innermost loop - dx1 = sx[ 1 ] - ( S0*sx[0] ); - dx2 = sx[ 2 ] - ( S1*sx[1] ); - dx3 = sx[ 3 ] - ( S2*sx[2] ); - dx4 = sx[ 4 ] - ( S3*sx[3] ); - dx5 = sx[ 5 ] - ( S4*sx[4] ); - dx6 = sx[ 6 ] - ( S5*sx[5] ); - dx7 = sx[ 7 ] - ( S6*sx[6] ); - dx8 = sx[ 8 ] - ( S7*sx[7] ); - dx9 = sx[ 9 ] - ( S8*sx[8] ); // offset increment for outermost loop - } - // Set a pointer to the first indexed element: - ix = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Iterate over the ndarray dimensions... - for ( i9 = 0; i9 < S9; i9++ ) { - for ( i8 = 0; i8 < S8; i8++ ) { - for ( i7 = 0; i7 < S7; i7++ ) { - for ( i6 = 0; i6 < S6; i6++ ) { - for ( i5 = 0; i5 < S5; i5++ ) { - for ( i4 = 0; i4 < S4; i4++ ) { - for ( i3 = 0; i3 < S3; i3++ ) { - for ( i2 = 0; i2 < S2; i2++ ) { - for ( i1 = 0; i1 < S1; i1++ ) { - for ( i0 = 0; i0 < S0; i0++ ) { - if ( xbuf[ ix ] === value ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - ix += dx2; - } - ix += dx3; - } - ix += dx4; - } - ix += dx5; - } - ix += dx6; - } - ix += dx7; - } - ix += dx8; - } - ix += dx9; - } - return false; -} - - -// EXPORTS // - -module.exports = includes10d; diff --git a/lib/10d_accessors.js b/lib/10d_accessors.js deleted file mode 100644 index f37200d..0000000 --- a/lib/10d_accessors.js +++ /dev/null @@ -1,215 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -/* eslint-disable max-depth */ - -'use strict'; - -// MODULES // - -var strides2order = require( '@stdlib/ndarray-base-strides2order' ); - - -// MAIN // - -/** -* Tests whether an ndarray contains a specified value. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {Array} x.accessors - data buffer accessors -* @param {*} value - search element -* @returns {boolean} result -* -* @example -* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -* var accessors = require( '@stdlib/array-base-accessors' ); -* -* // Create a data buffer: -* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 1, 1, 1, 1, 1, 1, 1, 1, 2, 2 ]; -* -* // Define the array strides: -* var sx = [ 8, 8, 8, 8, 8, 8, 8, 8, 4, 1 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'generic', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major', -* 'accessors': accessors( xbuf ).accessors -* }; -* -* // Perform reduction: -* var out = includes10d( x, 6.0 ); -* // returns true -* -* out = includes10d( x, 100.0 ); -* // returns false -*/ -function includes10d( x, value ) { // eslint-disable-line max-statements - var xbuf; - var get; - var dx0; - var dx1; - var dx2; - var dx3; - var dx4; - var dx5; - var dx6; - var dx7; - var dx8; - var dx9; - var sh; - var S0; - var S1; - var S2; - var S3; - var S4; - var S5; - var S6; - var S7; - var S8; - var S9; - var sx; - var ix; - var i0; - var i1; - var i2; - var i3; - var i4; - var i5; - var i6; - var i7; - var i8; - var i9; - - // Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop... - - // Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments... - sh = x.shape; - sx = x.strides; - if ( strides2order( sx ) === 1 ) { - // For row-major ndarrays, the last dimensions have the fastest changing indices... - S0 = sh[ 9 ]; - S1 = sh[ 8 ]; - S2 = sh[ 7 ]; - S3 = sh[ 6 ]; - S4 = sh[ 5 ]; - S5 = sh[ 4 ]; - S6 = sh[ 3 ]; - S7 = sh[ 2 ]; - S8 = sh[ 1 ]; - S9 = sh[ 0 ]; - dx0 = sx[ 9 ]; // offset increment for innermost loop - dx1 = sx[ 8 ] - ( S0*sx[9] ); - dx2 = sx[ 7 ] - ( S1*sx[8] ); - dx3 = sx[ 6 ] - ( S2*sx[7] ); - dx4 = sx[ 5 ] - ( S3*sx[6] ); - dx5 = sx[ 4 ] - ( S4*sx[5] ); - dx6 = sx[ 3 ] - ( S5*sx[4] ); - dx7 = sx[ 2 ] - ( S6*sx[3] ); - dx8 = sx[ 1 ] - ( S7*sx[2] ); - dx9 = sx[ 0 ] - ( S8*sx[1] ); // offset increment for outermost loop - } else { // order === 'column-major' - // For column-major ndarrays, the first dimensions have the fastest changing indices... - S0 = sh[ 0 ]; - S1 = sh[ 1 ]; - S2 = sh[ 2 ]; - S3 = sh[ 3 ]; - S4 = sh[ 4 ]; - S5 = sh[ 5 ]; - S6 = sh[ 6 ]; - S7 = sh[ 7 ]; - S8 = sh[ 8 ]; - S9 = sh[ 9 ]; - dx0 = sx[ 0 ]; // offset increment for innermost loop - dx1 = sx[ 1 ] - ( S0*sx[0] ); - dx2 = sx[ 2 ] - ( S1*sx[1] ); - dx3 = sx[ 3 ] - ( S2*sx[2] ); - dx4 = sx[ 4 ] - ( S3*sx[3] ); - dx5 = sx[ 5 ] - ( S4*sx[4] ); - dx6 = sx[ 6 ] - ( S5*sx[5] ); - dx7 = sx[ 7 ] - ( S6*sx[6] ); - dx8 = sx[ 8 ] - ( S7*sx[7] ); - dx9 = sx[ 9 ] - ( S8*sx[8] ); // offset increment for outermost loop - } - // Set a pointer to the first indexed element: - ix = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Cache accessor: - get = x.accessors[ 0 ]; - - // Iterate over the ndarray dimensions... - for ( i9 = 0; i9 < S9; i9++ ) { - for ( i8 = 0; i8 < S8; i8++ ) { - for ( i7 = 0; i7 < S7; i7++ ) { - for ( i6 = 0; i6 < S6; i6++ ) { - for ( i5 = 0; i5 < S5; i5++ ) { - for ( i4 = 0; i4 < S4; i4++ ) { - for ( i3 = 0; i3 < S3; i3++ ) { - for ( i2 = 0; i2 < S2; i2++ ) { - for ( i1 = 0; i1 < S1; i1++ ) { - for ( i0 = 0; i0 < S0; i0++ ) { - if ( get( xbuf, ix ) === value ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - ix += dx2; - } - ix += dx3; - } - ix += dx4; - } - ix += dx5; - } - ix += dx6; - } - ix += dx7; - } - ix += dx8; - } - ix += dx9; - } - return false; -} - - -// EXPORTS // - -module.exports = includes10d; diff --git a/lib/10d_blocked.js b/lib/10d_blocked.js deleted file mode 100644 index 0ca9c69..0000000 --- a/lib/10d_blocked.js +++ /dev/null @@ -1,308 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -/* eslint-disable max-depth, max-len */ - -'use strict'; - -// MODULES // - -var loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' ); -var blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' ); - - -// MAIN // - -/** -* Tests whether an ndarray contains a specified value via loop blocking. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {*} value - search element -* @returns {boolean} result -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* // Create a data buffer: -* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 1, 1, 1, 1, 1, 1, 1, 3, 1, 2 ]; -* -* // Define the array strides: -* var sx = [ 12, 12, 12, 12, 12, 12, 12, 4, 4, 1 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'float64', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major' -* }; -* -* // Perform reduction: -* var out = blockedincludes10d( x, 6.0 ); -* // returns true -* -* out = blockedincludes10d( x, 100.0 ); -* // returns false -*/ -function blockedincludes10d( x, value ) { // eslint-disable-line max-statements, max-lines-per-function - var bsize; - var xbuf; - var dx0; - var dx1; - var dx2; - var dx3; - var dx4; - var dx5; - var dx6; - var dx7; - var dx8; - var dx9; - var ox1; - var ox2; - var ox3; - var ox4; - var ox5; - var ox6; - var ox7; - var ox8; - var ox9; - var sh; - var s0; - var s1; - var s2; - var s3; - var s4; - var s5; - var s6; - var s7; - var s8; - var s9; - var sx; - var ox; - var ix; - var i0; - var i1; - var i2; - var i3; - var i4; - var i5; - var i6; - var i7; - var i8; - var i9; - var j0; - var j1; - var j2; - var j3; - var j4; - var j5; - var j6; - var j7; - var j8; - var j9; - var o; - - // Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop... - - // Resolve the loop interchange order: - o = loopOrder( x.shape, x.strides ); - sh = o.sh; - sx = o.sx; - - // Determine the block size: - bsize = blockSize( x.dtype ); - - // Set a pointer to the first indexed element: - ox = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Cache the offset increment for the innermost loop: - dx0 = sx[0]; - - // Iterate over blocks... - for ( j9 = sh[9]; j9 > 0; ) { - if ( j9 < bsize ) { - s9 = j9; - j9 = 0; - } else { - s9 = bsize; - j9 -= bsize; - } - ox9 = ox + ( j9*sx[9] ); - for ( j8 = sh[8]; j8 > 0; ) { - if ( j8 < bsize ) { - s8 = j8; - j8 = 0; - } else { - s8 = bsize; - j8 -= bsize; - } - dx9 = sx[9] - ( s8*sx[8] ); - ox8 = ox9 + ( j8*sx[8] ); - for ( j7 = sh[7]; j7 > 0; ) { - if ( j7 < bsize ) { - s7 = j7; - j7 = 0; - } else { - s7 = bsize; - j7 -= bsize; - } - dx8 = sx[8] - ( s7*sx[7] ); - ox7 = ox8 + ( j7*sx[7] ); - for ( j6 = sh[6]; j6 > 0; ) { - if ( j6 < bsize ) { - s6 = j6; - j6 = 0; - } else { - s6 = bsize; - j6 -= bsize; - } - dx7 = sx[7] - ( s6*sx[6] ); - ox6 = ox7 + ( j6*sx[6] ); - for ( j5 = sh[5]; j5 > 0; ) { - if ( j5 < bsize ) { - s5 = j5; - j5 = 0; - } else { - s5 = bsize; - j5 -= bsize; - } - dx6 = sx[6] - ( s5*sx[5] ); - ox5 = ox6 + ( j5*sx[5] ); - for ( j4 = sh[4]; j4 > 0; ) { - if ( j4 < bsize ) { - s4 = j4; - j4 = 0; - } else { - s4 = bsize; - j4 -= bsize; - } - dx5 = sx[5] - ( s4*sx[4] ); - ox4 = ox5 + ( j4*sx[4] ); - for ( j3 = sh[3]; j3 > 0; ) { - if ( j3 < bsize ) { - s3 = j3; - j3 = 0; - } else { - s3 = bsize; - j3 -= bsize; - } - dx4 = sx[4] - ( s3*sx[3] ); - ox3 = ox4 + ( j3*sx[3] ); - for ( j2 = sh[2]; j2 > 0; ) { - if ( j2 < bsize ) { - s2 = j2; - j2 = 0; - } else { - s2 = bsize; - j2 -= bsize; - } - dx3 = sx[3] - ( s2*sx[2] ); - ox2 = ox3 + ( j2*sx[2] ); - for ( j1 = sh[1]; j1 > 0; ) { - if ( j1 < bsize ) { - s1 = j1; - j1 = 0; - } else { - s1 = bsize; - j1 -= bsize; - } - dx2 = sx[2] - ( s1*sx[1] ); - ox1 = ox2 + ( j1*sx[1] ); - for ( j0 = sh[0]; j0 > 0; ) { - if ( j0 < bsize ) { - s0 = j0; - j0 = 0; - } else { - s0 = bsize; - j0 -= bsize; - } - // Compute the index offset for the first input ndarray element in the current block: - ix = ox1 + ( j0*sx[0] ); - - // Compute the loop offset increment: - dx1 = sx[1] - ( s0*sx[0] ); - - // Iterate over the ndarray dimensions... - for ( i9 = 0; i9 < s9; i9++ ) { - for ( i8 = 0; i8 < s8; i8++ ) { - for ( i7 = 0; i7 < s7; i7++ ) { - for ( i6 = 0; i6 < s6; i6++ ) { - for ( i5 = 0; i5 < s5; i5++ ) { - for ( i4 = 0; i4 < s4; i4++ ) { - for ( i3 = 0; i3 < s3; i3++ ) { - for ( i2 = 0; i2 < s2; i2++ ) { - for ( i1 = 0; i1 < s1; i1++ ) { - for ( i0 = 0; i0 < s0; i0++ ) { - if ( xbuf[ ix ] === value ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - ix += dx2; - } - ix += dx3; - } - ix += dx4; - } - ix += dx5; - } - ix += dx6; - } - ix += dx7; - } - ix += dx8; - } - ix += dx9; - } - } - } - } - } - } - } - } - } - } - } - return false; -} - - -// EXPORTS // - -module.exports = blockedincludes10d; diff --git a/lib/10d_blocked_accessors.js b/lib/10d_blocked_accessors.js deleted file mode 100644 index 5e41f0b..0000000 --- a/lib/10d_blocked_accessors.js +++ /dev/null @@ -1,315 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -/* eslint-disable max-depth, max-len */ - -'use strict'; - -// MODULES // - -var loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' ); -var blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' ); - - -// MAIN // - -/** -* Tests whether an ndarray contains a specified value via loop blocking. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {Array} x.accessors - data buffer accessors -* @param {*} value - search element -* @returns {boolean} result -* -* @example -* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -* var accessors = require( '@stdlib/array-base-accessors' ); -* -* // Create a data buffer: -* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 1, 1, 1, 1, 1, 1, 1, 1, 2, 2 ]; -* -* // Define the array strides: -* var sx = [ 8, 8, 8, 8, 8, 8, 8, 8, 4, 1 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'generic', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major', -* 'accessors': accessors( xbuf ).accessors -* }; -* -* // Perform reduction: -* var out = blockedincludes10d( x, 6.0 ); -* // returns true -* -* out = blockedincludes10d( x, 100.0 ); -* // returns false -*/ -function blockedincludes10d( x, value ) { // eslint-disable-line max-statements, max-lines-per-function - var bsize; - var xbuf; - var get; - var dx0; - var dx1; - var dx2; - var dx3; - var dx4; - var dx5; - var dx6; - var dx7; - var dx8; - var dx9; - var ox1; - var ox2; - var ox3; - var ox4; - var ox5; - var ox6; - var ox7; - var ox8; - var ox9; - var sh; - var s0; - var s1; - var s2; - var s3; - var s4; - var s5; - var s6; - var s7; - var s8; - var s9; - var sx; - var ox; - var ix; - var i0; - var i1; - var i2; - var i3; - var i4; - var i5; - var i6; - var i7; - var i8; - var i9; - var j0; - var j1; - var j2; - var j3; - var j4; - var j5; - var j6; - var j7; - var j8; - var j9; - var o; - - // Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop... - - // Resolve the loop interchange order: - o = loopOrder( x.shape, x.strides ); - sh = o.sh; - sx = o.sx; - - // Determine the block size: - bsize = blockSize( x.dtype ); - - // Set a pointer to the first indexed element: - ox = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Cache the offset increment for the innermost loop: - dx0 = sx[0]; - - // Cache accessor: - get = x.accessors[0]; - - // Iterate over blocks... - for ( j9 = sh[9]; j9 > 0; ) { - if ( j9 < bsize ) { - s9 = j9; - j9 = 0; - } else { - s9 = bsize; - j9 -= bsize; - } - ox9 = ox + ( j9*sx[9] ); - for ( j8 = sh[8]; j8 > 0; ) { - if ( j8 < bsize ) { - s8 = j8; - j8 = 0; - } else { - s8 = bsize; - j8 -= bsize; - } - dx9 = sx[9] - ( s8*sx[8] ); - ox8 = ox9 + ( j8*sx[8] ); - for ( j7 = sh[7]; j7 > 0; ) { - if ( j7 < bsize ) { - s7 = j7; - j7 = 0; - } else { - s7 = bsize; - j7 -= bsize; - } - dx8 = sx[8] - ( s7*sx[7] ); - ox7 = ox8 + ( j7*sx[7] ); - for ( j6 = sh[6]; j6 > 0; ) { - if ( j6 < bsize ) { - s6 = j6; - j6 = 0; - } else { - s6 = bsize; - j6 -= bsize; - } - dx7 = sx[7] - ( s6*sx[6] ); - ox6 = ox7 + ( j6*sx[6] ); - for ( j5 = sh[5]; j5 > 0; ) { - if ( j5 < bsize ) { - s5 = j5; - j5 = 0; - } else { - s5 = bsize; - j5 -= bsize; - } - dx6 = sx[6] - ( s5*sx[5] ); - ox5 = ox6 + ( j5*sx[5] ); - for ( j4 = sh[4]; j4 > 0; ) { - if ( j4 < bsize ) { - s4 = j4; - j4 = 0; - } else { - s4 = bsize; - j4 -= bsize; - } - dx5 = sx[5] - ( s4*sx[4] ); - ox4 = ox5 + ( j4*sx[4] ); - for ( j3 = sh[3]; j3 > 0; ) { - if ( j3 < bsize ) { - s3 = j3; - j3 = 0; - } else { - s3 = bsize; - j3 -= bsize; - } - dx4 = sx[4] - ( s3*sx[3] ); - ox3 = ox4 + ( j3*sx[3] ); - for ( j2 = sh[2]; j2 > 0; ) { - if ( j2 < bsize ) { - s2 = j2; - j2 = 0; - } else { - s2 = bsize; - j2 -= bsize; - } - dx3 = sx[3] - ( s2*sx[2] ); - ox2 = ox3 + ( j2*sx[2] ); - for ( j1 = sh[1]; j1 > 0; ) { - if ( j1 < bsize ) { - s1 = j1; - j1 = 0; - } else { - s1 = bsize; - j1 -= bsize; - } - dx2 = sx[2] - ( s1*sx[1] ); - ox1 = ox2 + ( j1*sx[1] ); - for ( j0 = sh[0]; j0 > 0; ) { - if ( j0 < bsize ) { - s0 = j0; - j0 = 0; - } else { - s0 = bsize; - j0 -= bsize; - } - // Compute the index offset for the first input ndarray element in the current block: - ix = ox1 + ( j0*sx[0] ); - - // Compute the loop offset increment: - dx1 = sx[1] - ( s0*sx[0] ); - - // Iterate over the ndarray dimensions... - for ( i9 = 0; i9 < s9; i9++ ) { - for ( i8 = 0; i8 < s8; i8++ ) { - for ( i7 = 0; i7 < s7; i7++ ) { - for ( i6 = 0; i6 < s6; i6++ ) { - for ( i5 = 0; i5 < s5; i5++ ) { - for ( i4 = 0; i4 < s4; i4++ ) { - for ( i3 = 0; i3 < s3; i3++ ) { - for ( i2 = 0; i2 < s2; i2++ ) { - for ( i1 = 0; i1 < s1; i1++ ) { - for ( i0 = 0; i0 < s0; i0++ ) { - if ( get( xbuf, ix ) === value ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - ix += dx2; - } - ix += dx3; - } - ix += dx4; - } - ix += dx5; - } - ix += dx6; - } - ix += dx7; - } - ix += dx8; - } - ix += dx9; - } - } - } - } - } - } - } - } - } - } - } - return false; -} - - -// EXPORTS // - -module.exports = blockedincludes10d; diff --git a/lib/10d_blocked_complex.js b/lib/10d_blocked_complex.js deleted file mode 100644 index e2c5e3d..0000000 --- a/lib/10d_blocked_complex.js +++ /dev/null @@ -1,316 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -/* eslint-disable max-depth, max-len */ - -'use strict'; - -// MODULES // - -var loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' ); -var blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' ); - - -// MAIN // - -/** -* Tests whether a reinterpreted complex number ndarray contains a specified value via loop blocking. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {ComplexLike} value - search element -* @returns {boolean} result -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* // Create a data buffer: -* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 1, 1, 1, 1, 1, 1, 1, 1, 2, 2 ]; -* -* // Define the array strides: -* var sx = [ 8, 8, 8, 8, 8, 8, 8, 8, 4, 2 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'complex128', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major' -* }; -* -* // Perform reduction: -* var v = { -* 're': 3.0, -* 'im': 4.0 -* }; -* var out = blockedincludes10d( x, v ); -* // returns true -* -* v = { -* 're': -3.0, -* 'im': -4.0 -* }; -* out = blockedincludes10d( x, v ); -* // returns false -*/ -function blockedincludes10d( x, value ) { // eslint-disable-line max-statements, max-lines-per-function - var bsize; - var xbuf; - var dx0; - var dx1; - var dx2; - var dx3; - var dx4; - var dx5; - var dx6; - var dx7; - var dx8; - var dx9; - var ox1; - var ox2; - var ox3; - var ox4; - var ox5; - var ox6; - var ox7; - var ox8; - var ox9; - var sh; - var s0; - var s1; - var s2; - var s3; - var s4; - var s5; - var s6; - var s7; - var s8; - var s9; - var sx; - var ox; - var ix; - var i0; - var i1; - var i2; - var i3; - var i4; - var i5; - var i6; - var i7; - var i8; - var i9; - var j0; - var j1; - var j2; - var j3; - var j4; - var j5; - var j6; - var j7; - var j8; - var j9; - var o; - - // Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop... - - // Resolve the loop interchange order: - o = loopOrder( x.shape, x.strides ); - sh = o.sh; - sx = o.sx; - - // Determine the block size: - bsize = blockSize( x.dtype ); - - // Set a pointer to the first indexed element: - ox = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Cache the offset increment for the innermost loop: - dx0 = sx[0]; - - // Iterate over blocks... - for ( j9 = sh[9]; j9 > 0; ) { - if ( j9 < bsize ) { - s9 = j9; - j9 = 0; - } else { - s9 = bsize; - j9 -= bsize; - } - ox9 = ox + ( j9*sx[9] ); - for ( j8 = sh[8]; j8 > 0; ) { - if ( j8 < bsize ) { - s8 = j8; - j8 = 0; - } else { - s8 = bsize; - j8 -= bsize; - } - dx9 = sx[9] - ( s8*sx[8] ); - ox8 = ox9 + ( j8*sx[8] ); - for ( j7 = sh[7]; j7 > 0; ) { - if ( j7 < bsize ) { - s7 = j7; - j7 = 0; - } else { - s7 = bsize; - j7 -= bsize; - } - dx8 = sx[8] - ( s7*sx[7] ); - ox7 = ox8 + ( j7*sx[7] ); - for ( j6 = sh[6]; j6 > 0; ) { - if ( j6 < bsize ) { - s6 = j6; - j6 = 0; - } else { - s6 = bsize; - j6 -= bsize; - } - dx7 = sx[7] - ( s6*sx[6] ); - ox6 = ox7 + ( j6*sx[6] ); - for ( j5 = sh[5]; j5 > 0; ) { - if ( j5 < bsize ) { - s5 = j5; - j5 = 0; - } else { - s5 = bsize; - j5 -= bsize; - } - dx6 = sx[6] - ( s5*sx[5] ); - ox5 = ox6 + ( j5*sx[5] ); - for ( j4 = sh[4]; j4 > 0; ) { - if ( j4 < bsize ) { - s4 = j4; - j4 = 0; - } else { - s4 = bsize; - j4 -= bsize; - } - dx5 = sx[5] - ( s4*sx[4] ); - ox4 = ox5 + ( j4*sx[4] ); - for ( j3 = sh[3]; j3 > 0; ) { - if ( j3 < bsize ) { - s3 = j3; - j3 = 0; - } else { - s3 = bsize; - j3 -= bsize; - } - dx4 = sx[4] - ( s3*sx[3] ); - ox3 = ox4 + ( j3*sx[3] ); - for ( j2 = sh[2]; j2 > 0; ) { - if ( j2 < bsize ) { - s2 = j2; - j2 = 0; - } else { - s2 = bsize; - j2 -= bsize; - } - dx3 = sx[3] - ( s2*sx[2] ); - ox2 = ox3 + ( j2*sx[2] ); - for ( j1 = sh[1]; j1 > 0; ) { - if ( j1 < bsize ) { - s1 = j1; - j1 = 0; - } else { - s1 = bsize; - j1 -= bsize; - } - dx2 = sx[2] - ( s1*sx[1] ); - ox1 = ox2 + ( j1*sx[1] ); - for ( j0 = sh[0]; j0 > 0; ) { - if ( j0 < bsize ) { - s0 = j0; - j0 = 0; - } else { - s0 = bsize; - j0 -= bsize; - } - // Compute the index offset for the first input ndarray element in the current block: - ix = ox1 + ( j0*sx[0] ); - - // Compute the loop offset increment: - dx1 = sx[1] - ( s0*sx[0] ); - - // Iterate over the ndarray dimensions... - for ( i9 = 0; i9 < s9; i9++ ) { - for ( i8 = 0; i8 < s8; i8++ ) { - for ( i7 = 0; i7 < s7; i7++ ) { - for ( i6 = 0; i6 < s6; i6++ ) { - for ( i5 = 0; i5 < s5; i5++ ) { - for ( i4 = 0; i4 < s4; i4++ ) { - for ( i3 = 0; i3 < s3; i3++ ) { - for ( i2 = 0; i2 < s2; i2++ ) { - for ( i1 = 0; i1 < s1; i1++ ) { - for ( i0 = 0; i0 < s0; i0++ ) { - if ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - ix += dx2; - } - ix += dx3; - } - ix += dx4; - } - ix += dx5; - } - ix += dx6; - } - ix += dx7; - } - ix += dx8; - } - ix += dx9; - } - } - } - } - } - } - } - } - } - } - } - return false; -} - - -// EXPORTS // - -module.exports = blockedincludes10d; diff --git a/lib/10d_complex.js b/lib/10d_complex.js deleted file mode 100644 index 6680da1..0000000 --- a/lib/10d_complex.js +++ /dev/null @@ -1,216 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -/* eslint-disable max-depth, max-len */ - -'use strict'; - -// MODULES // - -var strides2order = require( '@stdlib/ndarray-base-strides2order' ); - - -// MAIN // - -/** -* Tests whether a reinterpreted complex number ndarray contains a specified value. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {ComplexLike} value - search element -* @returns {boolean} result -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* // Create a data buffer: -* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 1, 1, 1, 1, 1, 1, 1, 1, 2, 2 ]; -* -* // Define the array strides: -* var sx = [ 8, 8, 8, 8, 8, 8, 8, 8, 4, 2 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'complex128', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major' -* }; -* -* // Perform reduction: -* var v = { -* 're': 3.0, -* 'im': 4.0 -* }; -* var out = includes10d( x, v ); -* // returns true -* -* v = { -* 're': -3.0, -* 'im': -4.0 -* }; -* out = includes10d( x, v ); -* // returns false -*/ -function includes10d( x, value ) { // eslint-disable-line max-statements - var xbuf; - var dx0; - var dx1; - var dx2; - var dx3; - var dx4; - var dx5; - var dx6; - var dx7; - var dx8; - var dx9; - var sh; - var S0; - var S1; - var S2; - var S3; - var S4; - var S5; - var S6; - var S7; - var S8; - var S9; - var sx; - var ix; - var i0; - var i1; - var i2; - var i3; - var i4; - var i5; - var i6; - var i7; - var i8; - var i9; - - // Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop... - - // Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments... - sh = x.shape; - sx = x.strides; - if ( strides2order( sx ) === 1 ) { - // For row-major ndarrays, the last dimensions have the fastest changing indices... - S0 = sh[ 9 ]; - S1 = sh[ 8 ]; - S2 = sh[ 7 ]; - S3 = sh[ 6 ]; - S4 = sh[ 5 ]; - S5 = sh[ 4 ]; - S6 = sh[ 3 ]; - S7 = sh[ 2 ]; - S8 = sh[ 1 ]; - S9 = sh[ 0 ]; - dx0 = sx[ 9 ]; // offset increment for innermost loop - dx1 = sx[ 8 ] - ( S0*sx[9] ); - dx2 = sx[ 7 ] - ( S1*sx[8] ); - dx3 = sx[ 6 ] - ( S2*sx[7] ); - dx4 = sx[ 5 ] - ( S3*sx[6] ); - dx5 = sx[ 4 ] - ( S4*sx[5] ); - dx6 = sx[ 3 ] - ( S5*sx[4] ); - dx7 = sx[ 2 ] - ( S6*sx[3] ); - dx8 = sx[ 1 ] - ( S7*sx[2] ); - dx9 = sx[ 0 ] - ( S8*sx[1] ); // offset increment for outermost loop - } else { // order === 'column-major' - // For column-major ndarrays, the first dimensions have the fastest changing indices... - S0 = sh[ 0 ]; - S1 = sh[ 1 ]; - S2 = sh[ 2 ]; - S3 = sh[ 3 ]; - S4 = sh[ 4 ]; - S5 = sh[ 5 ]; - S6 = sh[ 6 ]; - S7 = sh[ 7 ]; - S8 = sh[ 8 ]; - S9 = sh[ 9 ]; - dx0 = sx[ 0 ]; // offset increment for innermost loop - dx1 = sx[ 1 ] - ( S0*sx[0] ); - dx2 = sx[ 2 ] - ( S1*sx[1] ); - dx3 = sx[ 3 ] - ( S2*sx[2] ); - dx4 = sx[ 4 ] - ( S3*sx[3] ); - dx5 = sx[ 5 ] - ( S4*sx[4] ); - dx6 = sx[ 6 ] - ( S5*sx[5] ); - dx7 = sx[ 7 ] - ( S6*sx[6] ); - dx8 = sx[ 8 ] - ( S7*sx[7] ); - dx9 = sx[ 9 ] - ( S8*sx[8] ); // offset increment for outermost loop - } - // Set a pointer to the first indexed element: - ix = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Iterate over the ndarray dimensions... - for ( i9 = 0; i9 < S9; i9++ ) { - for ( i8 = 0; i8 < S8; i8++ ) { - for ( i7 = 0; i7 < S7; i7++ ) { - for ( i6 = 0; i6 < S6; i6++ ) { - for ( i5 = 0; i5 < S5; i5++ ) { - for ( i4 = 0; i4 < S4; i4++ ) { - for ( i3 = 0; i3 < S3; i3++ ) { - for ( i2 = 0; i2 < S2; i2++ ) { - for ( i1 = 0; i1 < S1; i1++ ) { - for ( i0 = 0; i0 < S0; i0++ ) { - if ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - ix += dx2; - } - ix += dx3; - } - ix += dx4; - } - ix += dx5; - } - ix += dx6; - } - ix += dx7; - } - ix += dx8; - } - ix += dx9; - } - return false; -} - - -// EXPORTS // - -module.exports = includes10d; diff --git a/lib/1d.js b/lib/1d.js deleted file mode 100644 index c1f25f6..0000000 --- a/lib/1d.js +++ /dev/null @@ -1,101 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MAIN // - -/** -* Tests whether an ndarray contains a specified value. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {*} value - search element -* @returns {boolean} result -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* // Create a data buffer: -* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 4 ]; -* -* // Define the array strides: -* var sx = [ 2 ]; -* -* // Define the index offset: -* var ox = 1; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'float64', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major' -* }; -* -* // Perform reduction: -* var out = includes1d( x, 6.0 ); -* // returns true -* -* out = includes1d( x, 100.0 ); -* // returns false -*/ -function includes1d( x, value ) { - var xbuf; - var dx0; - var S0; - var ix; - var i0; - - // Note on variable naming convention: S#, dx#, i# where # corresponds to the loop number, with `0` being the innermost loop... - - // Extract loop variables: dimensions and loop offset (pointer) increments: - S0 = x.shape[ 0 ]; - dx0 = x.strides[ 0 ]; - - // Set a pointer to the first indexed element: - ix = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Iterate over the ndarray dimensions... - for ( i0 = 0; i0 < S0; i0++ ) { - if ( xbuf[ ix ] === value ) { - return true; - } - ix += dx0; - } - return false; -} - - -// EXPORTS // - -module.exports = includes1d; diff --git a/lib/1d_accessors.js b/lib/1d_accessors.js deleted file mode 100644 index b655475..0000000 --- a/lib/1d_accessors.js +++ /dev/null @@ -1,108 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MAIN // - -/** -* Tests whether an ndarray contains a specified value. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {Array} x.accessors - data buffer accessors -* @param {*} value - search element -* @returns {boolean} result -* -* @example -* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -* var accessors = require( '@stdlib/array-base-accessors' ); -* -* // Create a data buffer: -* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 4 ]; -* -* // Define the array strides: -* var sx = [ 2 ]; -* -* // Define the index offset: -* var ox = 1; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'generic', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major', -* 'accessors': accessors( xbuf ).accessors -* }; -* -* // Perform reduction: -* var out = includes1d( x, 6.0 ); -* // returns true -* -* out = includes1d( x, 100.0 ); -* // returns false -*/ -function includes1d( x, value ) { - var xbuf; - var get; - var dx0; - var S0; - var ix; - var i0; - - // Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop... - - // Extract loop variables: dimensions and loop offset (pointer) increments... - S0 = x.shape[ 0 ]; - dx0 = x.strides[ 0 ]; - - // Set a pointer to the first indexed element: - ix = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Cache accessor: - get = x.accessors[ 0 ]; - - // Iterate over the ndarray dimensions... - for ( i0 = 0; i0 < S0; i0++ ) { - if ( get( xbuf, ix ) === value ) { - return true; - } - ix += dx0; - } - return false; -} - - -// EXPORTS // - -module.exports = includes1d; diff --git a/lib/1d_complex.js b/lib/1d_complex.js deleted file mode 100644 index 3e85e73..0000000 --- a/lib/1d_complex.js +++ /dev/null @@ -1,109 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MAIN // - -/** -* Tests whether a reinterpreted complex number ndarray contains a specified value. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {ComplexLike} value - search element -* @returns {boolean} result -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* // Create a data buffer: -* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 4 ]; -* -* // Define the array strides: -* var sx = [ 2 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'complex128', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major' -* }; -* -* // Perform reduction: -* var v = { -* 're': 3.0, -* 'im': 4.0 -* }; -* var out = includes1d( x, v ); -* // returns true -* -* v = { -* 're': -3.0, -* 'im': -4.0 -* }; -* out = includes1d( x, v ); -* // returns false -*/ -function includes1d( x, value ) { - var xbuf; - var dx0; - var S0; - var ix; - var i0; - - // Note on variable naming convention: S#, dx#, i# where # corresponds to the loop number, with `0` being the innermost loop... - - // Extract loop variables: dimensions and loop offset (pointer) increments: - S0 = x.shape[ 0 ]; - dx0 = x.strides[ 0 ]; - - // Set a pointer to the first indexed element: - ix = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Iterate over the ndarray dimensions... - for ( i0 = 0; i0 < S0; i0++ ) { - if ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) { - return true; - } - ix += dx0; - } - return false; -} - - -// EXPORTS // - -module.exports = includes1d; diff --git a/lib/2d.js b/lib/2d.js deleted file mode 100644 index 5ca7417..0000000 --- a/lib/2d.js +++ /dev/null @@ -1,126 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var strides2order = require( '@stdlib/ndarray-base-strides2order' ); - - -// MAIN // - -/** -* Tests whether an ndarray contains a specified value. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {*} value - search element -* @returns {boolean} result -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* // Create a data buffer: -* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 2, 2 ]; -* -* // Define the array strides: -* var sx = [ 4, 1 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'float64', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major' -* }; -* -* // Perform reduction: -* var out = includes2d( x, 6.0 ); -* // returns true -* -* out = includes2d( x, 100.0 ); -* // returns false -*/ -function includes2d( x, value ) { - var xbuf; - var dx0; - var dx1; - var sh; - var S0; - var S1; - var sx; - var ix; - var i0; - var i1; - - // Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop... - - // Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments... - sh = x.shape; - sx = x.strides; - if ( strides2order( sx ) === 1 ) { - // For row-major ndarrays, the last dimensions have the fastest changing indices... - S0 = sh[ 1 ]; - S1 = sh[ 0 ]; - dx0 = sx[ 1 ]; // offset increment for innermost loop - dx1 = sx[ 0 ] - ( S0*sx[1] ); // offset increment for outermost loop - } else { // order === 'column-major' - // For column-major ndarrays, the first dimensions have the fastest changing indices... - S0 = sh[ 0 ]; - S1 = sh[ 1 ]; - dx0 = sx[ 0 ]; // offset increment for innermost loop - dx1 = sx[ 1 ] - ( S0*sx[0] ); // offset increment for outermost loop - } - // Set a pointer to the first indexed element: - ix = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Iterate over the ndarray dimensions... - for ( i1 = 0; i1 < S1; i1++ ) { - for ( i0 = 0; i0 < S0; i0++ ) { - if ( xbuf[ ix ] === value ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - return false; -} - - -// EXPORTS // - -module.exports = includes2d; diff --git a/lib/2d_accessors.js b/lib/2d_accessors.js deleted file mode 100644 index 9deeafa..0000000 --- a/lib/2d_accessors.js +++ /dev/null @@ -1,133 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var strides2order = require( '@stdlib/ndarray-base-strides2order' ); - - -// MAIN // - -/** -* Tests whether an ndarray contains a specified value. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {Array} x.accessors - data buffer accessors -* @param {*} value - search element -* @returns {boolean} result -* -* @example -* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -* var accessors = require( '@stdlib/array-base-accessors' ); -* -* // Create a data buffer: -* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 2, 2 ]; -* -* // Define the array strides: -* var sx = [ 4, 1 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'generic', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major', -* 'accessors': accessors( xbuf ).accessors -* }; -* -* // Perform reduction: -* var out = includes2d( x, 6.0 ); -* // returns true -* -* out = includes2d( x, 100.0 ); -* // returns false -*/ -function includes2d( x, value ) { - var xbuf; - var get; - var dx0; - var dx1; - var sh; - var S0; - var S1; - var sx; - var ix; - var i0; - var i1; - - // Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop... - - // Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments... - sh = x.shape; - sx = x.strides; - if ( strides2order( sx ) === 1 ) { - // For row-major ndarrays, the last dimensions have the fastest changing indices... - S0 = sh[ 1 ]; - S1 = sh[ 0 ]; - dx0 = sx[ 1 ]; // offset increment for innermost loop - dx1 = sx[ 0 ] - ( S0*sx[1] ); // offset increment for outermost loop - } else { // order === 'column-major' - // For column-major ndarrays, the first dimensions have the fastest changing indices... - S0 = sh[ 0 ]; - S1 = sh[ 1 ]; - dx0 = sx[ 0 ]; // offset increment for innermost loop - dx1 = sx[ 1 ] - ( S0*sx[0] ); // offset increment for outermost loop - } - // Set a pointer to the first indexed element: - ix = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Cache accessor: - get = x.accessors[ 0 ]; - - // Iterate over the ndarray dimensions... - for ( i1 = 0; i1 < S1; i1++ ) { - for ( i0 = 0; i0 < S0; i0++ ) { - if ( get( xbuf, ix ) === value ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - return false; -} - - -// EXPORTS // - -module.exports = includes2d; diff --git a/lib/2d_blocked.js b/lib/2d_blocked.js deleted file mode 100644 index 0e65a9b..0000000 --- a/lib/2d_blocked.js +++ /dev/null @@ -1,154 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' ); -var blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' ); - - -// MAIN // - -/** -* Tests whether an ndarray contains a specified value via loop blocking. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {*} value - search element -* @returns {boolean} result -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* // Create a data buffer: -* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 2, 2 ]; -* -* // Define the array strides: -* var sx = [ 4, 1 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'float64', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major' -* }; -* -* // Perform reduction: -* var out = blockedincludes2d( x, 6.0 ); -* // returns true -* -* out = blockedincludes2d( x, 100.0 ); -* // returns false -*/ -function blockedincludes2d( x, value ) { - var bsize; - var xbuf; - var dx0; - var dx1; - var ox1; - var sh; - var s0; - var s1; - var sx; - var ox; - var ix; - var i0; - var i1; - var j0; - var j1; - var o; - - // Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop... - - // Resolve the loop interchange order: - o = loopOrder( x.shape, x.strides ); - sh = o.sh; - sx = o.sx; - - // Determine the block size: - bsize = blockSize( x.dtype ); - - // Set a pointer to the first indexed element: - ox = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Cache the offset increment for the innermost loop: - dx0 = sx[0]; - - // Iterate over blocks... - for ( j1 = sh[1]; j1 > 0; ) { - if ( j1 < bsize ) { - s1 = j1; - j1 = 0; - } else { - s1 = bsize; - j1 -= bsize; - } - ox1 = ox + ( j1*sx[1] ); - for ( j0 = sh[0]; j0 > 0; ) { - if ( j0 < bsize ) { - s0 = j0; - j0 = 0; - } else { - s0 = bsize; - j0 -= bsize; - } - // Compute the index offset for the first input ndarray element in the current block: - ix = ox1 + ( j0*sx[0] ); - - // Compute the loop offset increment: - dx1 = sx[1] - ( s0*sx[0] ); - - // Iterate over the ndarray dimensions... - for ( i1 = 0; i1 < s1; i1++ ) { - for ( i0 = 0; i0 < s0; i0++ ) { - if ( xbuf[ ix ] === value ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - } - } - return false; -} - - -// EXPORTS // - -module.exports = blockedincludes2d; diff --git a/lib/2d_blocked_accessors.js b/lib/2d_blocked_accessors.js deleted file mode 100644 index b1731f0..0000000 --- a/lib/2d_blocked_accessors.js +++ /dev/null @@ -1,161 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' ); -var blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' ); - - -// MAIN // - -/** -* Tests whether an ndarray contains a specified value via loop blocking. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {Array} x.accessors - data buffer accessors -* @param {*} value - search element -* @returns {boolean} result -* -* @example -* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -* var accessors = require( '@stdlib/array-base-accessors' ); -* -* // Create a data buffer: -* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 2, 2 ]; -* -* // Define the array strides: -* var sx = [ 4, 1 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'generic', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major', -* 'accessors': accessors( xbuf ).accessors -* }; -* -* // Perform reduction: -* var out = blockedincludes2d( x, 6.0 ); -* // returns true -* -* out = blockedincludes2d( x, 100.0 ); -* // returns false -*/ -function blockedincludes2d( x, value ) { - var bsize; - var xbuf; - var get; - var dx0; - var dx1; - var ox1; - var sh; - var s0; - var s1; - var sx; - var ox; - var ix; - var i0; - var i1; - var j0; - var j1; - var o; - - // Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop... - - // Resolve the loop interchange order: - o = loopOrder( x.shape, x.strides ); - sh = o.sh; - sx = o.sx; - - // Determine the block size: - bsize = blockSize( x.dtype ); - - // Set a pointer to the first indexed element: - ox = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Cache the offset increment for the innermost loop: - dx0 = sx[0]; - - // Cache accessor: - get = x.accessors[0]; - - // Iterate over blocks... - for ( j1 = sh[1]; j1 > 0; ) { - if ( j1 < bsize ) { - s1 = j1; - j1 = 0; - } else { - s1 = bsize; - j1 -= bsize; - } - ox1 = ox + ( j1*sx[1] ); - for ( j0 = sh[0]; j0 > 0; ) { - if ( j0 < bsize ) { - s0 = j0; - j0 = 0; - } else { - s0 = bsize; - j0 -= bsize; - } - // Compute the index offset for the first input ndarray element in the current block: - ix = ox1 + ( j0*sx[0] ); - - // Compute the loop offset increment: - dx1 = sx[1] - ( s0*sx[0] ); - - // Iterate over the ndarray dimensions... - for ( i1 = 0; i1 < s1; i1++ ) { - for ( i0 = 0; i0 < s0; i0++ ) { - if ( get( xbuf, ix ) === value ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - } - } - return false; -} - - -// EXPORTS // - -module.exports = blockedincludes2d; diff --git a/lib/2d_blocked_complex.js b/lib/2d_blocked_complex.js deleted file mode 100644 index ec368d5..0000000 --- a/lib/2d_blocked_complex.js +++ /dev/null @@ -1,162 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' ); -var blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' ); - - -// MAIN // - -/** -* Tests whether a reinterpreted complex number ndarray contains a specified value via loop blocking. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {ComplexLike} value - search element -* @returns {boolean} result -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* // Create a data buffer: -* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 2, 2 ]; -* -* // Define the array strides: -* var sx = [ 4, 2 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'complex128', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major' -* }; -* -* // Perform reduction: -* var v = { -* 're': 3.0, -* 'im': 4.0 -* }; -* var out = blockedincludes2d( x, v ); -* // returns true -* -* v = { -* 're': -3.0, -* 'im': -4.0 -* }; -* out = blockedincludes2d( x, v ); -* // returns false -*/ -function blockedincludes2d( x, value ) { - var bsize; - var xbuf; - var dx0; - var dx1; - var ox1; - var sh; - var s0; - var s1; - var sx; - var ox; - var ix; - var i0; - var i1; - var j0; - var j1; - var o; - - // Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop... - - // Resolve the loop interchange order: - o = loopOrder( x.shape, x.strides ); - sh = o.sh; - sx = o.sx; - - // Determine the block size: - bsize = blockSize( x.dtype ); - - // Set a pointer to the first indexed element: - ox = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Cache the offset increment for the innermost loop: - dx0 = sx[0]; - - // Iterate over blocks... - for ( j1 = sh[1]; j1 > 0; ) { - if ( j1 < bsize ) { - s1 = j1; - j1 = 0; - } else { - s1 = bsize; - j1 -= bsize; - } - ox1 = ox + ( j1*sx[1] ); - for ( j0 = sh[0]; j0 > 0; ) { - if ( j0 < bsize ) { - s0 = j0; - j0 = 0; - } else { - s0 = bsize; - j0 -= bsize; - } - // Compute the index offset for the first input ndarray element in the current block: - ix = ox1 + ( j0*sx[0] ); - - // Compute the loop offset increment: - dx1 = sx[1] - ( s0*sx[0] ); - - // Iterate over the ndarray dimensions... - for ( i1 = 0; i1 < s1; i1++ ) { - for ( i0 = 0; i0 < s0; i0++ ) { - if ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) { // eslint-disable-line max-len - return true; - } - ix += dx0; - } - ix += dx1; - } - } - } - return false; -} - - -// EXPORTS // - -module.exports = blockedincludes2d; diff --git a/lib/2d_complex.js b/lib/2d_complex.js deleted file mode 100644 index f3757d2..0000000 --- a/lib/2d_complex.js +++ /dev/null @@ -1,134 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var strides2order = require( '@stdlib/ndarray-base-strides2order' ); - - -// MAIN // - -/** -* Tests whether a reinterpreted complex number ndarray contains a specified value. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {ComplexLike} value - search element -* @returns {boolean} result -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* // Create a data buffer: -* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 2, 2 ]; -* -* // Define the array strides: -* var sx = [ 4, 2 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'complex128', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major' -* }; -* -* // Perform reduction: -* var v = { -* 're': 3.0, -* 'im': 4.0 -* }; -* var out = includes2d( x, v ); -* // returns true -* -* v = { -* 're': -3.0, -* 'im': -4.0 -* }; -* out = includes2d( x, v ); -* // returns false -*/ -function includes2d( x, value ) { - var xbuf; - var dx0; - var dx1; - var sh; - var S0; - var S1; - var sx; - var ix; - var i0; - var i1; - - // Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop... - - // Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments... - sh = x.shape; - sx = x.strides; - if ( strides2order( sx ) === 1 ) { - // For row-major ndarrays, the last dimensions have the fastest changing indices... - S0 = sh[ 1 ]; - S1 = sh[ 0 ]; - dx0 = sx[ 1 ]; // offset increment for innermost loop - dx1 = sx[ 0 ] - ( S0*sx[1] ); // offset increment for outermost loop - } else { // order === 'column-major' - // For column-major ndarrays, the first dimensions have the fastest changing indices... - S0 = sh[ 0 ]; - S1 = sh[ 1 ]; - dx0 = sx[ 0 ]; // offset increment for innermost loop - dx1 = sx[ 1 ] - ( S0*sx[0] ); // offset increment for outermost loop - } - // Set a pointer to the first indexed element: - ix = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Iterate over the ndarray dimensions... - for ( i1 = 0; i1 < S1; i1++ ) { - for ( i0 = 0; i0 < S0; i0++ ) { - if ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - return false; -} - - -// EXPORTS // - -module.exports = includes2d; diff --git a/lib/3d.js b/lib/3d.js deleted file mode 100644 index 5b2d70f..0000000 --- a/lib/3d.js +++ /dev/null @@ -1,136 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var strides2order = require( '@stdlib/ndarray-base-strides2order' ); - - -// MAIN // - -/** -* Tests whether an ndarray contains a specified value. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {*} value - search element -* @returns {boolean} result -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* // Create a data buffer: -* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 3, 1, 2 ]; -* -* // Define the array strides: -* var sx = [ 4, 4, 1 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'float64', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major' -* }; -* -* // Perform reduction: -* var out = includes3d( x, 6.0 ); -* // returns true -* -* out = includes3d( x, 100.0 ); -* // returns false -*/ -function includes3d( x, value ) { - var xbuf; - var dx0; - var dx1; - var dx2; - var sh; - var S0; - var S1; - var S2; - var sx; - var ix; - var i0; - var i1; - var i2; - - // Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop... - - // Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments... - sh = x.shape; - sx = x.strides; - if ( strides2order( sx ) === 1 ) { - // For row-major ndarrays, the last dimensions have the fastest changing indices... - S0 = sh[ 2 ]; - S1 = sh[ 1 ]; - S2 = sh[ 0 ]; - dx0 = sx[ 2 ]; // offset increment for innermost loop - dx1 = sx[ 1 ] - ( S0*sx[2] ); - dx2 = sx[ 0 ] - ( S1*sx[1] ); // offset increment for outermost loop - } else { // order === 'column-major' - // For column-major ndarrays, the first dimensions have the fastest changing indices... - S0 = sh[ 0 ]; - S1 = sh[ 1 ]; - S2 = sh[ 2 ]; - dx0 = sx[ 0 ]; // offset increment for innermost loop - dx1 = sx[ 1 ] - ( S0*sx[0] ); - dx2 = sx[ 2 ] - ( S1*sx[1] ); // offset increment for outermost loop - } - // Set a pointer to the first indexed element: - ix = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Iterate over the ndarray dimensions... - for ( i2 = 0; i2 < S2; i2++ ) { - for ( i1 = 0; i1 < S1; i1++ ) { - for ( i0 = 0; i0 < S0; i0++ ) { - if ( xbuf[ ix ] === value ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - ix += dx2; - } - return false; -} - - -// EXPORTS // - -module.exports = includes3d; diff --git a/lib/3d_accessors.js b/lib/3d_accessors.js deleted file mode 100644 index b316a83..0000000 --- a/lib/3d_accessors.js +++ /dev/null @@ -1,143 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var strides2order = require( '@stdlib/ndarray-base-strides2order' ); - - -// MAIN // - -/** -* Tests whether an ndarray contains a specified value. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {Array} x.accessors - data buffer accessors -* @param {*} value - search element -* @returns {boolean} result -* -* @example -* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -* var accessors = require( '@stdlib/array-base-accessors' ); -* -* // Create a data buffer: -* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 1, 2, 2 ]; -* -* // Define the array strides: -* var sx = [ 8, 4, 1 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'generic', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major', -* 'accessors': accessors( xbuf ).accessors -* }; -* -* // Perform reduction: -* var out = includes3d( x, 6.0 ); -* // returns true -* -* out = includes3d( x, 100.0 ); -* // returns false -*/ -function includes3d( x, value ) { - var xbuf; - var get; - var dx0; - var dx1; - var dx2; - var sh; - var S0; - var S1; - var S2; - var sx; - var ix; - var i0; - var i1; - var i2; - - // Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop... - - // Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments... - sh = x.shape; - sx = x.strides; - if ( strides2order( sx ) === 1 ) { - // For row-major ndarrays, the last dimensions have the fastest changing indices... - S0 = sh[ 2 ]; - S1 = sh[ 1 ]; - S2 = sh[ 0 ]; - dx0 = sx[ 2 ]; // offset increment for innermost loop - dx1 = sx[ 1 ] - ( S0*sx[2] ); - dx2 = sx[ 0 ] - ( S1*sx[1] ); // offset increment for outermost loop - } else { // order === 'column-major' - // For column-major ndarrays, the first dimensions have the fastest changing indices... - S0 = sh[ 0 ]; - S1 = sh[ 1 ]; - S2 = sh[ 2 ]; - dx0 = sx[ 0 ]; // offset increment for innermost loop - dx1 = sx[ 1 ] - ( S0*sx[0] ); - dx2 = sx[ 2 ] - ( S1*sx[1] ); // offset increment for outermost loop - } - // Set a pointer to the first indexed element: - ix = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Cache accessor: - get = x.accessors[ 0 ]; - - // Iterate over the ndarray dimensions... - for ( i2 = 0; i2 < S2; i2++ ) { - for ( i1 = 0; i1 < S1; i1++ ) { - for ( i0 = 0; i0 < S0; i0++ ) { - if ( get( xbuf, ix ) === value ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - ix += dx2; - } - return false; -} - - -// EXPORTS // - -module.exports = includes3d; diff --git a/lib/3d_blocked.js b/lib/3d_blocked.js deleted file mode 100644 index 0fd98af..0000000 --- a/lib/3d_blocked.js +++ /dev/null @@ -1,175 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -/* eslint-disable max-depth */ - -'use strict'; - -// MODULES // - -var loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' ); -var blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' ); - - -// MAIN // - -/** -* Tests whether an ndarray contains a specified value via loop blocking. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {*} value - search element -* @returns {boolean} result -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* // Create a data buffer: -* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 3, 1, 2 ]; -* -* // Define the array strides: -* var sx = [ 4, 4, 1 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'float64', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major' -* }; -* -* // Perform reduction: -* var out = blockedincludes3d( x, 6.0 ); -* // returns true -* -* out = blockedincludes3d( x, 100.0 ); -* // returns false -*/ -function blockedincludes3d( x, value ) { - var bsize; - var xbuf; - var dx0; - var dx1; - var dx2; - var ox1; - var ox2; - var sh; - var s0; - var s1; - var s2; - var sx; - var ox; - var ix; - var i0; - var i1; - var i2; - var j0; - var j1; - var j2; - var o; - - // Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop... - - // Resolve the loop interchange order: - o = loopOrder( x.shape, x.strides ); - sh = o.sh; - sx = o.sx; - - // Determine the block size: - bsize = blockSize( x.dtype ); - - // Set a pointer to the first indexed element: - ox = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Cache the offset increment for the innermost loop: - dx0 = sx[0]; - - // Iterate over blocks... - for ( j2 = sh[2]; j2 > 0; ) { - if ( j2 < bsize ) { - s2 = j2; - j2 = 0; - } else { - s2 = bsize; - j2 -= bsize; - } - ox2 = ox + ( j2*sx[2] ); - for ( j1 = sh[1]; j1 > 0; ) { - if ( j1 < bsize ) { - s1 = j1; - j1 = 0; - } else { - s1 = bsize; - j1 -= bsize; - } - dx2 = sx[2] - ( s1*sx[1] ); - ox1 = ox2 + ( j1*sx[1] ); - for ( j0 = sh[0]; j0 > 0; ) { - if ( j0 < bsize ) { - s0 = j0; - j0 = 0; - } else { - s0 = bsize; - j0 -= bsize; - } - // Compute the index offset for the first input ndarray element in the current block: - ix = ox1 + ( j0*sx[0] ); - - // Compute the loop offset increment: - dx1 = sx[1] - ( s0*sx[0] ); - - // Iterate over the ndarray dimensions... - for ( i2 = 0; i2 < s2; i2++ ) { - for ( i1 = 0; i1 < s1; i1++ ) { - for ( i0 = 0; i0 < s0; i0++ ) { - if ( xbuf[ ix ] === value ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - ix += dx2; - } - } - } - } - return false; -} - - -// EXPORTS // - -module.exports = blockedincludes3d; diff --git a/lib/3d_blocked_accessors.js b/lib/3d_blocked_accessors.js deleted file mode 100644 index 392da0f..0000000 --- a/lib/3d_blocked_accessors.js +++ /dev/null @@ -1,182 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -/* eslint-disable max-depth */ - -'use strict'; - -// MODULES // - -var loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' ); -var blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' ); - - -// MAIN // - -/** -* Tests whether an ndarray contains a specified value via loop blocking. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {Array} x.accessors - data buffer accessors -* @param {*} value - search element -* @returns {boolean} result -* -* @example -* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -* var accessors = require( '@stdlib/array-base-accessors' ); -* -* // Create a data buffer: -* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 1, 2, 2 ]; -* -* // Define the array strides: -* var sx = [ 8, 4, 1 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'generic', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major', -* 'accessors': accessors( xbuf ).accessors -* }; -* -* // Perform reduction: -* var out = blockedincludes3d( x, 6.0 ); -* // returns true -* -* out = blockedincludes3d( x, 100.0 ); -* // returns false -*/ -function blockedincludes3d( x, value ) { - var bsize; - var xbuf; - var get; - var dx0; - var dx1; - var dx2; - var ox1; - var ox2; - var sh; - var s0; - var s1; - var s2; - var sx; - var ox; - var ix; - var i0; - var i1; - var i2; - var j0; - var j1; - var j2; - var o; - - // Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop... - - // Resolve the loop interchange order: - o = loopOrder( x.shape, x.strides ); - sh = o.sh; - sx = o.sx; - - // Determine the block size: - bsize = blockSize( x.dtype ); - - // Set a pointer to the first indexed element: - ox = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Cache the offset increment for the innermost loop: - dx0 = sx[0]; - - // Cache accessor: - get = x.accessors[0]; - - // Iterate over blocks... - for ( j2 = sh[2]; j2 > 0; ) { - if ( j2 < bsize ) { - s2 = j2; - j2 = 0; - } else { - s2 = bsize; - j2 -= bsize; - } - ox2 = ox + ( j2*sx[2] ); - for ( j1 = sh[1]; j1 > 0; ) { - if ( j1 < bsize ) { - s1 = j1; - j1 = 0; - } else { - s1 = bsize; - j1 -= bsize; - } - dx2 = sx[2] - ( s1*sx[1] ); - ox1 = ox2 + ( j1*sx[1] ); - for ( j0 = sh[0]; j0 > 0; ) { - if ( j0 < bsize ) { - s0 = j0; - j0 = 0; - } else { - s0 = bsize; - j0 -= bsize; - } - // Compute the index offset for the first input ndarray element in the current block: - ix = ox1 + ( j0*sx[0] ); - - // Compute the loop offset increment: - dx1 = sx[1] - ( s0*sx[0] ); - - // Iterate over the ndarray dimensions... - for ( i2 = 0; i2 < s2; i2++ ) { - for ( i1 = 0; i1 < s1; i1++ ) { - for ( i0 = 0; i0 < s0; i0++ ) { - if ( get( xbuf, ix ) === value ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - ix += dx2; - } - } - } - } - return false; -} - - -// EXPORTS // - -module.exports = blockedincludes3d; diff --git a/lib/3d_blocked_complex.js b/lib/3d_blocked_complex.js deleted file mode 100644 index 073a8f4..0000000 --- a/lib/3d_blocked_complex.js +++ /dev/null @@ -1,183 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -/* eslint-disable max-depth, max-len */ - -'use strict'; - -// MODULES // - -var loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' ); -var blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' ); - - -// MAIN // - -/** -* Tests whether a reinterpreted complex number ndarray contains a specified value via loop blocking. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {ComplexLike} value - search element -* @returns {boolean} result -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* // Create a data buffer: -* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 1, 2, 2 ]; -* -* // Define the array strides: -* var sx = [ 8, 4, 2 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'complex128', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major' -* }; -* -* // Perform reduction: -* var v = { -* 're': 3.0, -* 'im': 4.0 -* }; -* var out = blockedincludes3d( x, v ); -* // returns true -* -* v = { -* 're': -3.0, -* 'im': -4.0 -* }; -* out = blockedincludes3d( x, v ); -* // returns false -*/ -function blockedincludes3d( x, value ) { - var bsize; - var xbuf; - var dx0; - var dx1; - var dx2; - var ox1; - var ox2; - var sh; - var s0; - var s1; - var s2; - var sx; - var ox; - var ix; - var i0; - var i1; - var i2; - var j0; - var j1; - var j2; - var o; - - // Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop... - - // Resolve the loop interchange order: - o = loopOrder( x.shape, x.strides ); - sh = o.sh; - sx = o.sx; - - // Determine the block size: - bsize = blockSize( x.dtype ); - - // Set a pointer to the first indexed element: - ox = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Cache the offset increment for the innermost loop: - dx0 = sx[0]; - - // Iterate over blocks... - for ( j2 = sh[2]; j2 > 0; ) { - if ( j2 < bsize ) { - s2 = j2; - j2 = 0; - } else { - s2 = bsize; - j2 -= bsize; - } - ox2 = ox + ( j2*sx[2] ); - for ( j1 = sh[1]; j1 > 0; ) { - if ( j1 < bsize ) { - s1 = j1; - j1 = 0; - } else { - s1 = bsize; - j1 -= bsize; - } - dx2 = sx[2] - ( s1*sx[1] ); - ox1 = ox2 + ( j1*sx[1] ); - for ( j0 = sh[0]; j0 > 0; ) { - if ( j0 < bsize ) { - s0 = j0; - j0 = 0; - } else { - s0 = bsize; - j0 -= bsize; - } - // Compute the index offset for the first input ndarray element in the current block: - ix = ox1 + ( j0*sx[0] ); - - // Compute the loop offset increment: - dx1 = sx[1] - ( s0*sx[0] ); - - // Iterate over the ndarray dimensions... - for ( i2 = 0; i2 < s2; i2++ ) { - for ( i1 = 0; i1 < s1; i1++ ) { - for ( i0 = 0; i0 < s0; i0++ ) { - if ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - ix += dx2; - } - } - } - } - return false; -} - - -// EXPORTS // - -module.exports = blockedincludes3d; diff --git a/lib/3d_complex.js b/lib/3d_complex.js deleted file mode 100644 index 47de954..0000000 --- a/lib/3d_complex.js +++ /dev/null @@ -1,144 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var strides2order = require( '@stdlib/ndarray-base-strides2order' ); - - -// MAIN // - -/** -* Tests whether a reinterpreted complex number ndarray contains a specified value. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {ComplexLike} value - search element -* @returns {boolean} result -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* // Create a data buffer: -* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 1, 2, 2 ]; -* -* // Define the array strides: -* var sx = [ 8, 4, 2 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'complex128', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major' -* }; -* -* // Perform reduction: -* var v = { -* 're': 3.0, -* 'im': 4.0 -* }; -* var out = includes3d( x, v ); -* // returns true -* -* v = { -* 're': -3.0, -* 'im': -4.0 -* }; -* out = includes3d( x, v ); -* // returns false -*/ -function includes3d( x, value ) { - var xbuf; - var dx0; - var dx1; - var dx2; - var sh; - var S0; - var S1; - var S2; - var sx; - var ix; - var i0; - var i1; - var i2; - - // Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop... - - // Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments... - sh = x.shape; - sx = x.strides; - if ( strides2order( sx ) === 1 ) { - // For row-major ndarrays, the last dimensions have the fastest changing indices... - S0 = sh[ 2 ]; - S1 = sh[ 1 ]; - S2 = sh[ 0 ]; - dx0 = sx[ 2 ]; // offset increment for innermost loop - dx1 = sx[ 1 ] - ( S0*sx[2] ); - dx2 = sx[ 0 ] - ( S1*sx[1] ); // offset increment for outermost loop - } else { // order === 'column-major' - // For column-major ndarrays, the first dimensions have the fastest changing indices... - S0 = sh[ 0 ]; - S1 = sh[ 1 ]; - S2 = sh[ 2 ]; - dx0 = sx[ 0 ]; // offset increment for innermost loop - dx1 = sx[ 1 ] - ( S0*sx[0] ); - dx2 = sx[ 2 ] - ( S1*sx[1] ); // offset increment for outermost loop - } - // Set a pointer to the first indexed element: - ix = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Iterate over the ndarray dimensions... - for ( i2 = 0; i2 < S2; i2++ ) { - for ( i1 = 0; i1 < S1; i1++ ) { - for ( i0 = 0; i0 < S0; i0++ ) { - if ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - ix += dx2; - } - return false; -} - - -// EXPORTS // - -module.exports = includes3d; diff --git a/lib/4d.js b/lib/4d.js deleted file mode 100644 index 94fc680..0000000 --- a/lib/4d.js +++ /dev/null @@ -1,146 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var strides2order = require( '@stdlib/ndarray-base-strides2order' ); - - -// MAIN // - -/** -* Tests whether an ndarray contains a specified value. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {*} value - search element -* @returns {boolean} result -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* // Create a data buffer: -* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 1, 3, 1, 2 ]; -* -* // Define the array strides: -* var sx = [ 12, 4, 4, 1 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'float64', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major' -* }; -* -* // Perform reduction: -* var out = includes4d( x, 6.0 ); -* // returns true -* -* out = includes4d( x, 100.0 ); -* // returns false -*/ -function includes4d( x, value ) { - var xbuf; - var dx0; - var dx1; - var dx2; - var dx3; - var sh; - var S0; - var S1; - var S2; - var S3; - var sx; - var ix; - var i0; - var i1; - var i2; - var i3; - - // Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop... - - // Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments... - sh = x.shape; - sx = x.strides; - if ( strides2order( sx ) === 1 ) { - // For row-major ndarrays, the last dimensions have the fastest changing indices... - S0 = sh[ 3 ]; - S1 = sh[ 2 ]; - S2 = sh[ 1 ]; - S3 = sh[ 0 ]; - dx0 = sx[ 3 ]; // offset increment for innermost loop - dx1 = sx[ 2 ] - ( S0*sx[3] ); - dx2 = sx[ 1 ] - ( S1*sx[2] ); - dx3 = sx[ 0 ] - ( S2*sx[1] ); // offset increment for outermost loop - } else { // order === 'column-major' - // For column-major ndarrays, the first dimensions have the fastest changing indices... - S0 = sh[ 0 ]; - S1 = sh[ 1 ]; - S2 = sh[ 2 ]; - S3 = sh[ 3 ]; - dx0 = sx[ 0 ]; // offset increment for innermost loop - dx1 = sx[ 1 ] - ( S0*sx[0] ); - dx2 = sx[ 2 ] - ( S1*sx[1] ); - dx3 = sx[ 3 ] - ( S2*sx[2] ); // offset increment for outermost loop - } - // Set a pointer to the first indexed element: - ix = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Iterate over the ndarray dimensions... - for ( i3 = 0; i3 < S3; i3++ ) { - for ( i2 = 0; i2 < S2; i2++ ) { - for ( i1 = 0; i1 < S1; i1++ ) { - for ( i0 = 0; i0 < S0; i0++ ) { - if ( xbuf[ ix ] === value ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - ix += dx2; - } - ix += dx3; - } - return false; -} - - -// EXPORTS // - -module.exports = includes4d; diff --git a/lib/4d_accessors.js b/lib/4d_accessors.js deleted file mode 100644 index 9b5b675..0000000 --- a/lib/4d_accessors.js +++ /dev/null @@ -1,153 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var strides2order = require( '@stdlib/ndarray-base-strides2order' ); - - -// MAIN // - -/** -* Tests whether an ndarray contains a specified value. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {Array} x.accessors - data buffer accessors -* @param {*} value - search element -* @returns {boolean} result -* -* @example -* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -* var accessors = require( '@stdlib/array-base-accessors' ); -* -* // Create a data buffer: -* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 1, 1, 2, 2 ]; -* -* // Define the array strides: -* var sx = [ 8, 8, 4, 1 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'generic', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major', -* 'accessors': accessors( xbuf ).accessors -* }; -* -* // Perform reduction: -* var out = includes4d( x, 6.0 ); -* // returns true -* -* out = includes4d( x, 100.0 ); -* // returns false -*/ -function includes4d( x, value ) { - var xbuf; - var get; - var dx0; - var dx1; - var dx2; - var dx3; - var sh; - var S0; - var S1; - var S2; - var S3; - var sx; - var ix; - var i0; - var i1; - var i2; - var i3; - - // Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop... - - // Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments... - sh = x.shape; - sx = x.strides; - if ( strides2order( sx ) === 1 ) { - // For row-major ndarrays, the last dimensions have the fastest changing indices... - S0 = sh[ 3 ]; - S1 = sh[ 2 ]; - S2 = sh[ 1 ]; - S3 = sh[ 0 ]; - dx0 = sx[ 3 ]; // offset increment for innermost loop - dx1 = sx[ 2 ] - ( S0*sx[3] ); - dx2 = sx[ 1 ] - ( S1*sx[2] ); - dx3 = sx[ 0 ] - ( S2*sx[1] ); // offset increment for outermost loop - } else { // order === 'column-major' - // For column-major ndarrays, the first dimensions have the fastest changing indices... - S0 = sh[ 0 ]; - S1 = sh[ 1 ]; - S2 = sh[ 2 ]; - S3 = sh[ 3 ]; - dx0 = sx[ 0 ]; // offset increment for innermost loop - dx1 = sx[ 1 ] - ( S0*sx[0] ); - dx2 = sx[ 2 ] - ( S1*sx[1] ); - dx3 = sx[ 3 ] - ( S2*sx[2] ); // offset increment for outermost loop - } - // Set a pointer to the first indexed element: - ix = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Cache accessor: - get = x.accessors[ 0 ]; - - // Iterate over the ndarray dimensions... - for ( i3 = 0; i3 < S3; i3++ ) { - for ( i2 = 0; i2 < S2; i2++ ) { - for ( i1 = 0; i1 < S1; i1++ ) { - for ( i0 = 0; i0 < S0; i0++ ) { - if ( get( xbuf, ix ) === value ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - ix += dx2; - } - ix += dx3; - } - return false; -} - - -// EXPORTS // - -module.exports = includes4d; diff --git a/lib/4d_blocked.js b/lib/4d_blocked.js deleted file mode 100644 index c1883ba..0000000 --- a/lib/4d_blocked.js +++ /dev/null @@ -1,194 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -/* eslint-disable max-depth */ - -'use strict'; - -// MODULES // - -var loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' ); -var blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' ); - - -// MAIN // - -/** -* Tests whether an ndarray contains a specified value via loop blocking. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {*} value - search element -* @returns {boolean} result -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* // Create a data buffer: -* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 1, 3, 1, 2 ]; -* -* // Define the array strides: -* var sx = [ 12, 4, 4, 1 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'float64', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major' -* }; -* -* // Perform reduction: -* var out = blockedincludes4d( x, 6.0 ); -* // returns true -* -* out = blockedincludes4d( x, 100.0 ); -* // returns false -*/ -function blockedincludes4d( x, value ) { - var bsize; - var xbuf; - var dx0; - var dx1; - var dx2; - var dx3; - var ox1; - var ox2; - var ox3; - var sh; - var s0; - var s1; - var s2; - var s3; - var sx; - var ox; - var ix; - var i0; - var i1; - var i2; - var i3; - var j0; - var j1; - var j2; - var j3; - var o; - - // Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop... - - // Resolve the loop interchange order: - o = loopOrder( x.shape, x.strides ); - sh = o.sh; - sx = o.sx; - - // Determine the block size: - bsize = blockSize( x.dtype ); - - // Set a pointer to the first indexed element: - ox = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Cache the offset increment for the innermost loop: - dx0 = sx[0]; - - // Iterate over blocks... - for ( j3 = sh[3]; j3 > 0; ) { - if ( j3 < bsize ) { - s3 = j3; - j3 = 0; - } else { - s3 = bsize; - j3 -= bsize; - } - ox3 = ox + ( j3*sx[3] ); - for ( j2 = sh[2]; j2 > 0; ) { - if ( j2 < bsize ) { - s2 = j2; - j2 = 0; - } else { - s2 = bsize; - j2 -= bsize; - } - dx3 = sx[3] - ( s2*sx[2] ); - ox2 = ox3 + ( j2*sx[2] ); - for ( j1 = sh[1]; j1 > 0; ) { - if ( j1 < bsize ) { - s1 = j1; - j1 = 0; - } else { - s1 = bsize; - j1 -= bsize; - } - dx2 = sx[2] - ( s1*sx[1] ); - ox1 = ox2 + ( j1*sx[1] ); - for ( j0 = sh[0]; j0 > 0; ) { - if ( j0 < bsize ) { - s0 = j0; - j0 = 0; - } else { - s0 = bsize; - j0 -= bsize; - } - // Compute the index offset for the first input ndarray element in the current block: - ix = ox1 + ( j0*sx[0] ); - - // Compute the loop offset increment: - dx1 = sx[1] - ( s0*sx[0] ); - - // Iterate over the ndarray dimensions... - for ( i3 = 0; i3 < s3; i3++ ) { - for ( i2 = 0; i2 < s2; i2++ ) { - for ( i1 = 0; i1 < s1; i1++ ) { - for ( i0 = 0; i0 < s0; i0++ ) { - if ( xbuf[ ix ] === value ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - ix += dx2; - } - ix += dx3; - } - } - } - } - } - return false; -} - - -// EXPORTS // - -module.exports = blockedincludes4d; diff --git a/lib/4d_blocked_accessors.js b/lib/4d_blocked_accessors.js deleted file mode 100644 index 8495d23..0000000 --- a/lib/4d_blocked_accessors.js +++ /dev/null @@ -1,201 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -/* eslint-disable max-depth */ - -'use strict'; - -// MODULES // - -var loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' ); -var blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' ); - - -// MAIN // - -/** -* Tests whether an ndarray contains a specified value via loop blocking. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {Array} x.accessors - data buffer accessors -* @param {*} value - search element -* @returns {boolean} result -* -* @example -* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -* var accessors = require( '@stdlib/array-base-accessors' ); -* -* // Create a data buffer: -* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 1, 1, 2, 2 ]; -* -* // Define the array strides: -* var sx = [ 8, 8, 4, 1 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'generic', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major', -* 'accessors': accessors( xbuf ).accessors -* }; -* -* // Perform reduction: -* var out = blockedincludes4d( x, 6.0 ); -* // returns true -* -* out = blockedincludes4d( x, 100.0 ); -* // returns false -*/ -function blockedincludes4d( x, value ) { - var bsize; - var xbuf; - var get; - var dx0; - var dx1; - var dx2; - var dx3; - var ox1; - var ox2; - var ox3; - var sh; - var s0; - var s1; - var s2; - var s3; - var sx; - var ox; - var ix; - var i0; - var i1; - var i2; - var i3; - var j0; - var j1; - var j2; - var j3; - var o; - - // Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop... - - // Resolve the loop interchange order: - o = loopOrder( x.shape, x.strides ); - sh = o.sh; - sx = o.sx; - - // Determine the block size: - bsize = blockSize( x.dtype ); - - // Set a pointer to the first indexed element: - ox = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Cache the offset increment for the innermost loop: - dx0 = sx[0]; - - // Cache accessor: - get = x.accessors[0]; - - // Iterate over blocks... - for ( j3 = sh[3]; j3 > 0; ) { - if ( j3 < bsize ) { - s3 = j3; - j3 = 0; - } else { - s3 = bsize; - j3 -= bsize; - } - ox3 = ox + ( j3*sx[3] ); - for ( j2 = sh[2]; j2 > 0; ) { - if ( j2 < bsize ) { - s2 = j2; - j2 = 0; - } else { - s2 = bsize; - j2 -= bsize; - } - dx3 = sx[3] - ( s2*sx[2] ); - ox2 = ox3 + ( j2*sx[2] ); - for ( j1 = sh[1]; j1 > 0; ) { - if ( j1 < bsize ) { - s1 = j1; - j1 = 0; - } else { - s1 = bsize; - j1 -= bsize; - } - dx2 = sx[2] - ( s1*sx[1] ); - ox1 = ox2 + ( j1*sx[1] ); - for ( j0 = sh[0]; j0 > 0; ) { - if ( j0 < bsize ) { - s0 = j0; - j0 = 0; - } else { - s0 = bsize; - j0 -= bsize; - } - // Compute the index offset for the first input ndarray element in the current block: - ix = ox1 + ( j0*sx[0] ); - - // Compute the loop offset increment: - dx1 = sx[1] - ( s0*sx[0] ); - - // Iterate over the ndarray dimensions... - for ( i3 = 0; i3 < s3; i3++ ) { - for ( i2 = 0; i2 < s2; i2++ ) { - for ( i1 = 0; i1 < s1; i1++ ) { - for ( i0 = 0; i0 < s0; i0++ ) { - if ( get( xbuf, ix ) === value ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - ix += dx2; - } - ix += dx3; - } - } - } - } - } - return false; -} - - -// EXPORTS // - -module.exports = blockedincludes4d; diff --git a/lib/4d_blocked_complex.js b/lib/4d_blocked_complex.js deleted file mode 100644 index 4d56b1c..0000000 --- a/lib/4d_blocked_complex.js +++ /dev/null @@ -1,202 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -/* eslint-disable max-depth, max-len */ - -'use strict'; - -// MODULES // - -var loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' ); -var blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' ); - - -// MAIN // - -/** -* Tests whether a reinterpreted complex number ndarray contains a specified value via loop blocking. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {ComplexLike} value - search element -* @returns {boolean} result -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* // Create a data buffer: -* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 1, 1, 2, 2 ]; -* -* // Define the array strides: -* var sx = [ 8, 8, 4, 2 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'complex128', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major' -* }; -* -* // Perform reduction: -* var v = { -* 're': 3.0, -* 'im': 4.0 -* }; -* var out = blockedincludes4d( x, v ); -* // returns true -* -* v = { -* 're': -3.0, -* 'im': -4.0 -* }; -* out = blockedincludes4d( x, v ); -* // returns false -*/ -function blockedincludes4d( x, value ) { - var bsize; - var xbuf; - var dx0; - var dx1; - var dx2; - var dx3; - var ox1; - var ox2; - var ox3; - var sh; - var s0; - var s1; - var s2; - var s3; - var sx; - var ox; - var ix; - var i0; - var i1; - var i2; - var i3; - var j0; - var j1; - var j2; - var j3; - var o; - - // Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop... - - // Resolve the loop interchange order: - o = loopOrder( x.shape, x.strides ); - sh = o.sh; - sx = o.sx; - - // Determine the block size: - bsize = blockSize( x.dtype ); - - // Set a pointer to the first indexed element: - ox = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Cache the offset increment for the innermost loop: - dx0 = sx[0]; - - // Iterate over blocks... - for ( j3 = sh[3]; j3 > 0; ) { - if ( j3 < bsize ) { - s3 = j3; - j3 = 0; - } else { - s3 = bsize; - j3 -= bsize; - } - ox3 = ox + ( j3*sx[3] ); - for ( j2 = sh[2]; j2 > 0; ) { - if ( j2 < bsize ) { - s2 = j2; - j2 = 0; - } else { - s2 = bsize; - j2 -= bsize; - } - dx3 = sx[3] - ( s2*sx[2] ); - ox2 = ox3 + ( j2*sx[2] ); - for ( j1 = sh[1]; j1 > 0; ) { - if ( j1 < bsize ) { - s1 = j1; - j1 = 0; - } else { - s1 = bsize; - j1 -= bsize; - } - dx2 = sx[2] - ( s1*sx[1] ); - ox1 = ox2 + ( j1*sx[1] ); - for ( j0 = sh[0]; j0 > 0; ) { - if ( j0 < bsize ) { - s0 = j0; - j0 = 0; - } else { - s0 = bsize; - j0 -= bsize; - } - // Compute the index offset for the first input ndarray element in the current block: - ix = ox1 + ( j0*sx[0] ); - - // Compute the loop offset increment: - dx1 = sx[1] - ( s0*sx[0] ); - - // Iterate over the ndarray dimensions... - for ( i3 = 0; i3 < s3; i3++ ) { - for ( i2 = 0; i2 < s2; i2++ ) { - for ( i1 = 0; i1 < s1; i1++ ) { - for ( i0 = 0; i0 < s0; i0++ ) { - if ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - ix += dx2; - } - ix += dx3; - } - } - } - } - } - return false; -} - - -// EXPORTS // - -module.exports = blockedincludes4d; diff --git a/lib/4d_complex.js b/lib/4d_complex.js deleted file mode 100644 index f020860..0000000 --- a/lib/4d_complex.js +++ /dev/null @@ -1,156 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -/* eslint-disable max-len */ - -'use strict'; - -// MODULES // - -var strides2order = require( '@stdlib/ndarray-base-strides2order' ); - - -// MAIN // - -/** -* Tests whether a reinterpreted complex number ndarray contains a specified value. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {ComplexLike} value - search element -* @returns {boolean} result -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* // Create a data buffer: -* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 1, 1, 2, 2 ]; -* -* // Define the array strides: -* var sx = [ 8, 8, 4, 2 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'complex128', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major' -* }; -* -* // Perform reduction: -* var v = { -* 're': 3.0, -* 'im': 4.0 -* }; -* var out = includes4d( x, v ); -* // returns true -* -* v = { -* 're': -3.0, -* 'im': -4.0 -* }; -* out = includes4d( x, v ); -* // returns false -*/ -function includes4d( x, value ) { - var xbuf; - var dx0; - var dx1; - var dx2; - var dx3; - var sh; - var S0; - var S1; - var S2; - var S3; - var sx; - var ix; - var i0; - var i1; - var i2; - var i3; - - // Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop... - - // Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments... - sh = x.shape; - sx = x.strides; - if ( strides2order( sx ) === 1 ) { - // For row-major ndarrays, the last dimensions have the fastest changing indices... - S0 = sh[ 3 ]; - S1 = sh[ 2 ]; - S2 = sh[ 1 ]; - S3 = sh[ 0 ]; - dx0 = sx[ 3 ]; // offset increment for innermost loop - dx1 = sx[ 2 ] - ( S0*sx[3] ); - dx2 = sx[ 1 ] - ( S1*sx[2] ); - dx3 = sx[ 0 ] - ( S2*sx[1] ); // offset increment for outermost loop - } else { // order === 'column-major' - // For column-major ndarrays, the first dimensions have the fastest changing indices... - S0 = sh[ 0 ]; - S1 = sh[ 1 ]; - S2 = sh[ 2 ]; - S3 = sh[ 3 ]; - dx0 = sx[ 0 ]; // offset increment for innermost loop - dx1 = sx[ 1 ] - ( S0*sx[0] ); - dx2 = sx[ 2 ] - ( S1*sx[1] ); - dx3 = sx[ 3 ] - ( S2*sx[2] ); // offset increment for outermost loop - } - // Set a pointer to the first indexed element: - ix = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Iterate over the ndarray dimensions... - for ( i3 = 0; i3 < S3; i3++ ) { - for ( i2 = 0; i2 < S2; i2++ ) { - for ( i1 = 0; i1 < S1; i1++ ) { - for ( i0 = 0; i0 < S0; i0++ ) { - if ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - ix += dx2; - } - ix += dx3; - } - return false; -} - - -// EXPORTS // - -module.exports = includes4d; diff --git a/lib/5d.js b/lib/5d.js deleted file mode 100644 index 973b4ea..0000000 --- a/lib/5d.js +++ /dev/null @@ -1,158 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -/* eslint-disable max-depth */ - -'use strict'; - -// MODULES // - -var strides2order = require( '@stdlib/ndarray-base-strides2order' ); - - -// MAIN // - -/** -* Tests whether an ndarray contains a specified value. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {*} value - search element -* @returns {boolean} result -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* // Create a data buffer: -* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 1, 1, 3, 1, 2 ]; -* -* // Define the array strides: -* var sx = [ 12, 12, 4, 4, 1 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'float64', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major' -* }; -* -* // Perform reduction: -* var out = includes5d( x, 6.0 ); -* // returns true -* -* out = includes5d( x, 100.0 ); -* // returns false -*/ -function includes5d( x, value ) { - var xbuf; - var dx0; - var dx1; - var dx2; - var dx3; - var dx4; - var sh; - var S0; - var S1; - var S2; - var S3; - var S4; - var sx; - var ix; - var i0; - var i1; - var i2; - var i3; - var i4; - - // Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop... - - // Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments... - sh = x.shape; - sx = x.strides; - if ( strides2order( sx ) === 1 ) { - // For row-major ndarrays, the last dimensions have the fastest changing indices... - S0 = sh[ 4 ]; - S1 = sh[ 3 ]; - S2 = sh[ 2 ]; - S3 = sh[ 1 ]; - S4 = sh[ 0 ]; - dx0 = sx[ 4 ]; // offset increment for innermost loop - dx1 = sx[ 3 ] - ( S0*sx[4] ); - dx2 = sx[ 2 ] - ( S1*sx[3] ); - dx3 = sx[ 1 ] - ( S2*sx[2] ); - dx4 = sx[ 0 ] - ( S3*sx[1] ); // offset increment for outermost loop - } else { // order === 'column-major' - // For column-major ndarrays, the first dimensions have the fastest changing indices... - S0 = sh[ 0 ]; - S1 = sh[ 1 ]; - S2 = sh[ 2 ]; - S3 = sh[ 3 ]; - S4 = sh[ 4 ]; - dx0 = sx[ 0 ]; // offset increment for innermost loop - dx1 = sx[ 1 ] - ( S0*sx[0] ); - dx2 = sx[ 2 ] - ( S1*sx[1] ); - dx3 = sx[ 3 ] - ( S2*sx[2] ); - dx4 = sx[ 4 ] - ( S3*sx[3] ); // offset increment for outermost loop - } - // Set a pointer to the first indexed element: - ix = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Iterate over the ndarray dimensions... - for ( i4 = 0; i4 < S4; i4++ ) { - for ( i3 = 0; i3 < S3; i3++ ) { - for ( i2 = 0; i2 < S2; i2++ ) { - for ( i1 = 0; i1 < S1; i1++ ) { - for ( i0 = 0; i0 < S0; i0++ ) { - if ( xbuf[ ix ] === value ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - ix += dx2; - } - ix += dx3; - } - ix += dx4; - } - return false; -} - - -// EXPORTS // - -module.exports = includes5d; diff --git a/lib/5d_accessors.js b/lib/5d_accessors.js deleted file mode 100644 index 5a74d7a..0000000 --- a/lib/5d_accessors.js +++ /dev/null @@ -1,165 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -/* eslint-disable max-depth */ - -'use strict'; - -// MODULES // - -var strides2order = require( '@stdlib/ndarray-base-strides2order' ); - - -// MAIN // - -/** -* Tests whether an ndarray contains a specified value. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {Array} x.accessors - data buffer accessors -* @param {*} value - search element -* @returns {boolean} result -* -* @example -* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -* var accessors = require( '@stdlib/array-base-accessors' ); -* -* // Create a data buffer: -* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 1, 1, 1, 2, 2 ]; -* -* // Define the array strides: -* var sx = [ 8, 8, 8, 4, 1 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'generic', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major', -* 'accessors': accessors( xbuf ).accessors -* }; -* -* // Perform reduction: -* var out = includes5d( x, 6.0 ); -* // returns true -* -* out = includes5d( x, 100.0 ); -* // returns false -*/ -function includes5d( x, value ) { - var xbuf; - var get; - var dx0; - var dx1; - var dx2; - var dx3; - var dx4; - var sh; - var S0; - var S1; - var S2; - var S3; - var S4; - var sx; - var ix; - var i0; - var i1; - var i2; - var i3; - var i4; - - // Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop... - - // Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments... - sh = x.shape; - sx = x.strides; - if ( strides2order( sx ) === 1 ) { - // For row-major ndarrays, the last dimensions have the fastest changing indices... - S0 = sh[ 4 ]; - S1 = sh[ 3 ]; - S2 = sh[ 2 ]; - S3 = sh[ 1 ]; - S4 = sh[ 0 ]; - dx0 = sx[ 4 ]; // offset increment for innermost loop - dx1 = sx[ 3 ] - ( S0*sx[4] ); - dx2 = sx[ 2 ] - ( S1*sx[3] ); - dx3 = sx[ 1 ] - ( S2*sx[2] ); - dx4 = sx[ 0 ] - ( S3*sx[1] ); // offset increment for outermost loop - } else { // order === 'column-major' - // For column-major ndarrays, the first dimensions have the fastest changing indices... - S0 = sh[ 0 ]; - S1 = sh[ 1 ]; - S2 = sh[ 2 ]; - S3 = sh[ 3 ]; - S4 = sh[ 4 ]; - dx0 = sx[ 0 ]; // offset increment for innermost loop - dx1 = sx[ 1 ] - ( S0*sx[0] ); - dx2 = sx[ 2 ] - ( S1*sx[1] ); - dx3 = sx[ 3 ] - ( S2*sx[2] ); - dx4 = sx[ 4 ] - ( S3*sx[3] ); // offset increment for outermost loop - } - // Set a pointer to the first indexed element: - ix = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Cache accessor: - get = x.accessors[ 0 ]; - - // Iterate over the ndarray dimensions... - for ( i4 = 0; i4 < S4; i4++ ) { - for ( i3 = 0; i3 < S3; i3++ ) { - for ( i2 = 0; i2 < S2; i2++ ) { - for ( i1 = 0; i1 < S1; i1++ ) { - for ( i0 = 0; i0 < S0; i0++ ) { - if ( get( xbuf, ix ) === value ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - ix += dx2; - } - ix += dx3; - } - ix += dx4; - } - return false; -} - - -// EXPORTS // - -module.exports = includes5d; diff --git a/lib/5d_blocked.js b/lib/5d_blocked.js deleted file mode 100644 index 80a78e6..0000000 --- a/lib/5d_blocked.js +++ /dev/null @@ -1,213 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -/* eslint-disable max-depth */ - -'use strict'; - -// MODULES // - -var loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' ); -var blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' ); - - -// MAIN // - -/** -* Tests whether an ndarray contains a specified value via loop blocking. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {*} value - search element -* @returns {boolean} result -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* // Create a data buffer: -* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 1, 1, 3, 1, 2 ]; -* -* // Define the array strides: -* var sx = [ 12, 12, 4, 4, 1 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'float64', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major' -* }; -* -* // Perform reduction: -* var out = blockedincludes5d( x, 6.0 ); -* // returns true -* -* out = blockedincludes5d( x, 100.0 ); -* // returns false -*/ -function blockedincludes5d( x, value ) { - var bsize; - var xbuf; - var dx0; - var dx1; - var dx2; - var dx3; - var dx4; - var ox1; - var ox2; - var ox3; - var ox4; - var sh; - var s0; - var s1; - var s2; - var s3; - var s4; - var sx; - var ox; - var ix; - var i0; - var i1; - var i2; - var i3; - var i4; - var j0; - var j1; - var j2; - var j3; - var j4; - var o; - - // Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop... - - // Resolve the loop interchange order: - o = loopOrder( x.shape, x.strides ); - sh = o.sh; - sx = o.sx; - - // Determine the block size: - bsize = blockSize( x.dtype ); - - // Set a pointer to the first indexed element: - ox = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Cache the offset increment for the innermost loop: - dx0 = sx[0]; - - // Iterate over blocks... - for ( j4 = sh[4]; j4 > 0; ) { - if ( j4 < bsize ) { - s4 = j4; - j4 = 0; - } else { - s4 = bsize; - j4 -= bsize; - } - ox4 = ox + ( j4*sx[4] ); - for ( j3 = sh[3]; j3 > 0; ) { - if ( j3 < bsize ) { - s3 = j3; - j3 = 0; - } else { - s3 = bsize; - j3 -= bsize; - } - dx4 = sx[4] - ( s3*sx[3] ); - ox3 = ox4 + ( j3*sx[3] ); - for ( j2 = sh[2]; j2 > 0; ) { - if ( j2 < bsize ) { - s2 = j2; - j2 = 0; - } else { - s2 = bsize; - j2 -= bsize; - } - dx3 = sx[3] - ( s2*sx[2] ); - ox2 = ox3 + ( j2*sx[2] ); - for ( j1 = sh[1]; j1 > 0; ) { - if ( j1 < bsize ) { - s1 = j1; - j1 = 0; - } else { - s1 = bsize; - j1 -= bsize; - } - dx2 = sx[2] - ( s1*sx[1] ); - ox1 = ox2 + ( j1*sx[1] ); - for ( j0 = sh[0]; j0 > 0; ) { - if ( j0 < bsize ) { - s0 = j0; - j0 = 0; - } else { - s0 = bsize; - j0 -= bsize; - } - // Compute the index offset for the first input ndarray element in the current block: - ix = ox1 + ( j0*sx[0] ); - - // Compute the loop offset increment: - dx1 = sx[1] - ( s0*sx[0] ); - - // Iterate over the ndarray dimensions... - for ( i4 = 0; i4 < s4; i4++ ) { - for ( i3 = 0; i3 < s3; i3++ ) { - for ( i2 = 0; i2 < s2; i2++ ) { - for ( i1 = 0; i1 < s1; i1++ ) { - for ( i0 = 0; i0 < s0; i0++ ) { - if ( xbuf[ ix ] === value ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - ix += dx2; - } - ix += dx3; - } - ix += dx4; - } - } - } - } - } - } - return false; -} - - -// EXPORTS // - -module.exports = blockedincludes5d; diff --git a/lib/5d_blocked_accessors.js b/lib/5d_blocked_accessors.js deleted file mode 100644 index 049d8d5..0000000 --- a/lib/5d_blocked_accessors.js +++ /dev/null @@ -1,220 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -/* eslint-disable max-depth */ - -'use strict'; - -// MODULES // - -var loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' ); -var blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' ); - - -// MAIN // - -/** -* Tests whether an ndarray contains a specified value via loop blocking. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {Array} x.accessors - data buffer accessors -* @param {*} value - search element -* @returns {boolean} result -* -* @example -* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -* var accessors = require( '@stdlib/array-base-accessors' ); -* -* // Create a data buffer: -* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 1, 1, 1, 2, 2 ]; -* -* // Define the array strides: -* var sx = [ 8, 8, 8, 4, 1 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'generic', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major', -* 'accessors': accessors( xbuf ).accessors -* }; -* -* // Perform reduction: -* var out = blockedincludes5d( x, 6.0 ); -* // returns true -* -* out = blockedincludes5d( x, 100.0 ); -* // returns false -*/ -function blockedincludes5d( x, value ) { - var bsize; - var xbuf; - var get; - var dx0; - var dx1; - var dx2; - var dx3; - var dx4; - var ox1; - var ox2; - var ox3; - var ox4; - var sh; - var s0; - var s1; - var s2; - var s3; - var s4; - var sx; - var ox; - var ix; - var i0; - var i1; - var i2; - var i3; - var i4; - var j0; - var j1; - var j2; - var j3; - var j4; - var o; - - // Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop... - - // Resolve the loop interchange order: - o = loopOrder( x.shape, x.strides ); - sh = o.sh; - sx = o.sx; - - // Determine the block size: - bsize = blockSize( x.dtype ); - - // Set a pointer to the first indexed element: - ox = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Cache the offset increment for the innermost loop: - dx0 = sx[0]; - - // Cache accessor: - get = x.accessors[0]; - - // Iterate over blocks... - for ( j4 = sh[4]; j4 > 0; ) { - if ( j4 < bsize ) { - s4 = j4; - j4 = 0; - } else { - s4 = bsize; - j4 -= bsize; - } - ox4 = ox + ( j4*sx[4] ); - for ( j3 = sh[3]; j3 > 0; ) { - if ( j3 < bsize ) { - s3 = j3; - j3 = 0; - } else { - s3 = bsize; - j3 -= bsize; - } - dx4 = sx[4] - ( s3*sx[3] ); - ox3 = ox4 + ( j3*sx[3] ); - for ( j2 = sh[2]; j2 > 0; ) { - if ( j2 < bsize ) { - s2 = j2; - j2 = 0; - } else { - s2 = bsize; - j2 -= bsize; - } - dx3 = sx[3] - ( s2*sx[2] ); - ox2 = ox3 + ( j2*sx[2] ); - for ( j1 = sh[1]; j1 > 0; ) { - if ( j1 < bsize ) { - s1 = j1; - j1 = 0; - } else { - s1 = bsize; - j1 -= bsize; - } - dx2 = sx[2] - ( s1*sx[1] ); - ox1 = ox2 + ( j1*sx[1] ); - for ( j0 = sh[0]; j0 > 0; ) { - if ( j0 < bsize ) { - s0 = j0; - j0 = 0; - } else { - s0 = bsize; - j0 -= bsize; - } - // Compute the index offset for the first input ndarray element in the current block: - ix = ox1 + ( j0*sx[0] ); - - // Compute the loop offset increment: - dx1 = sx[1] - ( s0*sx[0] ); - - // Iterate over the ndarray dimensions... - for ( i4 = 0; i4 < s4; i4++ ) { - for ( i3 = 0; i3 < s3; i3++ ) { - for ( i2 = 0; i2 < s2; i2++ ) { - for ( i1 = 0; i1 < s1; i1++ ) { - for ( i0 = 0; i0 < s0; i0++ ) { - if ( get( xbuf, ix ) === value ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - ix += dx2; - } - ix += dx3; - } - ix += dx4; - } - } - } - } - } - } - return false; -} - - -// EXPORTS // - -module.exports = blockedincludes5d; diff --git a/lib/5d_blocked_complex.js b/lib/5d_blocked_complex.js deleted file mode 100644 index 486635a..0000000 --- a/lib/5d_blocked_complex.js +++ /dev/null @@ -1,221 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -/* eslint-disable max-depth, max-len */ - -'use strict'; - -// MODULES // - -var loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' ); -var blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' ); - - -// MAIN // - -/** -* Tests whether a reinterpreted complex number ndarray contains a specified value via loop blocking. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {ComplexLike} value - search element -* @returns {boolean} result -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* // Create a data buffer: -* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 1, 1, 1, 2, 2 ]; -* -* // Define the array strides: -* var sx = [ 8, 8, 8, 4, 2 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'complex128', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major' -* }; -* -* // Perform reduction: -* var v = { -* 're': 3.0, -* 'im': 4.0 -* }; -* var out = blockedincludes5d( x, v ); -* // returns true -* -* v = { -* 're': -3.0, -* 'im': -4.0 -* }; -* out = blockedincludes5d( x, v ); -* // returns false -*/ -function blockedincludes5d( x, value ) { - var bsize; - var xbuf; - var dx0; - var dx1; - var dx2; - var dx3; - var dx4; - var ox1; - var ox2; - var ox3; - var ox4; - var sh; - var s0; - var s1; - var s2; - var s3; - var s4; - var sx; - var ox; - var ix; - var i0; - var i1; - var i2; - var i3; - var i4; - var j0; - var j1; - var j2; - var j3; - var j4; - var o; - - // Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop... - - // Resolve the loop interchange order: - o = loopOrder( x.shape, x.strides ); - sh = o.sh; - sx = o.sx; - - // Determine the block size: - bsize = blockSize( x.dtype ); - - // Set a pointer to the first indexed element: - ox = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Cache the offset increment for the innermost loop: - dx0 = sx[0]; - - // Iterate over blocks... - for ( j4 = sh[4]; j4 > 0; ) { - if ( j4 < bsize ) { - s4 = j4; - j4 = 0; - } else { - s4 = bsize; - j4 -= bsize; - } - ox4 = ox + ( j4*sx[4] ); - for ( j3 = sh[3]; j3 > 0; ) { - if ( j3 < bsize ) { - s3 = j3; - j3 = 0; - } else { - s3 = bsize; - j3 -= bsize; - } - dx4 = sx[4] - ( s3*sx[3] ); - ox3 = ox4 + ( j3*sx[3] ); - for ( j2 = sh[2]; j2 > 0; ) { - if ( j2 < bsize ) { - s2 = j2; - j2 = 0; - } else { - s2 = bsize; - j2 -= bsize; - } - dx3 = sx[3] - ( s2*sx[2] ); - ox2 = ox3 + ( j2*sx[2] ); - for ( j1 = sh[1]; j1 > 0; ) { - if ( j1 < bsize ) { - s1 = j1; - j1 = 0; - } else { - s1 = bsize; - j1 -= bsize; - } - dx2 = sx[2] - ( s1*sx[1] ); - ox1 = ox2 + ( j1*sx[1] ); - for ( j0 = sh[0]; j0 > 0; ) { - if ( j0 < bsize ) { - s0 = j0; - j0 = 0; - } else { - s0 = bsize; - j0 -= bsize; - } - // Compute the index offset for the first input ndarray element in the current block: - ix = ox1 + ( j0*sx[0] ); - - // Compute the loop offset increment: - dx1 = sx[1] - ( s0*sx[0] ); - - // Iterate over the ndarray dimensions... - for ( i4 = 0; i4 < s4; i4++ ) { - for ( i3 = 0; i3 < s3; i3++ ) { - for ( i2 = 0; i2 < s2; i2++ ) { - for ( i1 = 0; i1 < s1; i1++ ) { - for ( i0 = 0; i0 < s0; i0++ ) { - if ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - ix += dx2; - } - ix += dx3; - } - ix += dx4; - } - } - } - } - } - } - return false; -} - - -// EXPORTS // - -module.exports = blockedincludes5d; diff --git a/lib/5d_complex.js b/lib/5d_complex.js deleted file mode 100644 index bfd722b..0000000 --- a/lib/5d_complex.js +++ /dev/null @@ -1,166 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -/* eslint-disable max-depth, max-len */ - -'use strict'; - -// MODULES // - -var strides2order = require( '@stdlib/ndarray-base-strides2order' ); - - -// MAIN // - -/** -* Tests whether a reinterpreted complex number ndarray contains a specified value. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {ComplexLike} value - search element -* @returns {boolean} result -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* // Create a data buffer: -* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 1, 1, 1, 2, 2 ]; -* -* // Define the array strides: -* var sx = [ 8, 8, 8, 4, 2 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'complex128', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major' -* }; -* -* // Perform reduction: -* var v = { -* 're': 3.0, -* 'im': 4.0 -* }; -* var out = includes5d( x, v ); -* // returns true -* -* v = { -* 're': -3.0, -* 'im': -4.0 -* }; -* out = includes5d( x, v ); -* // returns false -*/ -function includes5d( x, value ) { - var xbuf; - var dx0; - var dx1; - var dx2; - var dx3; - var dx4; - var sh; - var S0; - var S1; - var S2; - var S3; - var S4; - var sx; - var ix; - var i0; - var i1; - var i2; - var i3; - var i4; - - // Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop... - - // Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments... - sh = x.shape; - sx = x.strides; - if ( strides2order( sx ) === 1 ) { - // For row-major ndarrays, the last dimensions have the fastest changing indices... - S0 = sh[ 4 ]; - S1 = sh[ 3 ]; - S2 = sh[ 2 ]; - S3 = sh[ 1 ]; - S4 = sh[ 0 ]; - dx0 = sx[ 4 ]; // offset increment for innermost loop - dx1 = sx[ 3 ] - ( S0*sx[4] ); - dx2 = sx[ 2 ] - ( S1*sx[3] ); - dx3 = sx[ 1 ] - ( S2*sx[2] ); - dx4 = sx[ 0 ] - ( S3*sx[1] ); // offset increment for outermost loop - } else { // order === 'column-major' - // For column-major ndarrays, the first dimensions have the fastest changing indices... - S0 = sh[ 0 ]; - S1 = sh[ 1 ]; - S2 = sh[ 2 ]; - S3 = sh[ 3 ]; - S4 = sh[ 4 ]; - dx0 = sx[ 0 ]; // offset increment for innermost loop - dx1 = sx[ 1 ] - ( S0*sx[0] ); - dx2 = sx[ 2 ] - ( S1*sx[1] ); - dx3 = sx[ 3 ] - ( S2*sx[2] ); - dx4 = sx[ 4 ] - ( S3*sx[3] ); // offset increment for outermost loop - } - // Set a pointer to the first indexed element: - ix = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Iterate over the ndarray dimensions... - for ( i4 = 0; i4 < S4; i4++ ) { - for ( i3 = 0; i3 < S3; i3++ ) { - for ( i2 = 0; i2 < S2; i2++ ) { - for ( i1 = 0; i1 < S1; i1++ ) { - for ( i0 = 0; i0 < S0; i0++ ) { - if ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - ix += dx2; - } - ix += dx3; - } - ix += dx4; - } - return false; -} - - -// EXPORTS // - -module.exports = includes5d; diff --git a/lib/6d.js b/lib/6d.js deleted file mode 100644 index a5f93a1..0000000 --- a/lib/6d.js +++ /dev/null @@ -1,168 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -/* eslint-disable max-depth */ - -'use strict'; - -// MODULES // - -var strides2order = require( '@stdlib/ndarray-base-strides2order' ); - - -// MAIN // - -/** -* Tests whether an ndarray contains a specified value. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {*} value - search element -* @returns {boolean} result -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* // Create a data buffer: -* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 1, 1, 1, 3, 1, 2 ]; -* -* // Define the array strides: -* var sx = [ 12, 12, 12, 4, 4, 1 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'float64', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major' -* }; -* -* // Perform reduction: -* var out = includes6d( x, 6.0 ); -* // returns true -* -* out = includes6d( x, 100.0 ); -* // returns false -*/ -function includes6d( x, value ) { - var xbuf; - var dx0; - var dx1; - var dx2; - var dx3; - var dx4; - var dx5; - var sh; - var S0; - var S1; - var S2; - var S3; - var S4; - var S5; - var sx; - var ix; - var i0; - var i1; - var i2; - var i3; - var i4; - var i5; - - // Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop... - - // Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments... - sh = x.shape; - sx = x.strides; - if ( strides2order( sx ) === 1 ) { - // For row-major ndarrays, the last dimensions have the fastest changing indices... - S0 = sh[ 5 ]; - S1 = sh[ 4 ]; - S2 = sh[ 3 ]; - S3 = sh[ 2 ]; - S4 = sh[ 1 ]; - S5 = sh[ 0 ]; - dx0 = sx[ 5 ]; // offset increment for innermost loop - dx1 = sx[ 4 ] - ( S0*sx[5] ); - dx2 = sx[ 3 ] - ( S1*sx[4] ); - dx3 = sx[ 2 ] - ( S2*sx[3] ); - dx4 = sx[ 1 ] - ( S3*sx[2] ); - dx5 = sx[ 0 ] - ( S4*sx[1] ); // offset increment for outermost loop - } else { // order === 'column-major' - // For column-major ndarrays, the first dimensions have the fastest changing indices... - S0 = sh[ 0 ]; - S1 = sh[ 1 ]; - S2 = sh[ 2 ]; - S3 = sh[ 3 ]; - S4 = sh[ 4 ]; - S5 = sh[ 5 ]; - dx0 = sx[ 0 ]; // offset increment for innermost loop - dx1 = sx[ 1 ] - ( S0*sx[0] ); - dx2 = sx[ 2 ] - ( S1*sx[1] ); - dx3 = sx[ 3 ] - ( S2*sx[2] ); - dx4 = sx[ 4 ] - ( S3*sx[3] ); - dx5 = sx[ 5 ] - ( S4*sx[4] ); // offset increment for outermost loop - } - // Set a pointer to the first indexed element: - ix = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Iterate over the ndarray dimensions... - for ( i5 = 0; i5 < S5; i5++ ) { - for ( i4 = 0; i4 < S4; i4++ ) { - for ( i3 = 0; i3 < S3; i3++ ) { - for ( i2 = 0; i2 < S2; i2++ ) { - for ( i1 = 0; i1 < S1; i1++ ) { - for ( i0 = 0; i0 < S0; i0++ ) { - if ( xbuf[ ix ] === value ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - ix += dx2; - } - ix += dx3; - } - ix += dx4; - } - ix += dx5; - } - return false; -} - - -// EXPORTS // - -module.exports = includes6d; diff --git a/lib/6d_accessors.js b/lib/6d_accessors.js deleted file mode 100644 index 4a287a2..0000000 --- a/lib/6d_accessors.js +++ /dev/null @@ -1,175 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -/* eslint-disable max-depth */ - -'use strict'; - -// MODULES // - -var strides2order = require( '@stdlib/ndarray-base-strides2order' ); - - -// MAIN // - -/** -* Tests whether an ndarray contains a specified value. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {Array} x.accessors - data buffer accessors -* @param {*} value - search element -* @returns {boolean} result -* -* @example -* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -* var accessors = require( '@stdlib/array-base-accessors' ); -* -* // Create a data buffer: -* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 1, 1, 1, 1, 2, 2 ]; -* -* // Define the array strides: -* var sx = [ 8, 8, 8, 8, 4, 1 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'generic', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major', -* 'accessors': accessors( xbuf ).accessors -* }; -* -* // Perform reduction: -* var out = includes6d( x, 6.0 ); -* // returns true -* -* out = includes6d( x, 100.0 ); -* // returns false -*/ -function includes6d( x, value ) { - var xbuf; - var get; - var dx0; - var dx1; - var dx2; - var dx3; - var dx4; - var dx5; - var sh; - var S0; - var S1; - var S2; - var S3; - var S4; - var S5; - var sx; - var ix; - var i0; - var i1; - var i2; - var i3; - var i4; - var i5; - - // Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop... - - // Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments... - sh = x.shape; - sx = x.strides; - if ( strides2order( sx ) === 1 ) { - // For row-major ndarrays, the last dimensions have the fastest changing indices... - S0 = sh[ 5 ]; - S1 = sh[ 4 ]; - S2 = sh[ 3 ]; - S3 = sh[ 2 ]; - S4 = sh[ 1 ]; - S5 = sh[ 0 ]; - dx0 = sx[ 5 ]; // offset increment for innermost loop - dx1 = sx[ 4 ] - ( S0*sx[5] ); - dx2 = sx[ 3 ] - ( S1*sx[4] ); - dx3 = sx[ 2 ] - ( S2*sx[3] ); - dx4 = sx[ 1 ] - ( S3*sx[2] ); - dx5 = sx[ 0 ] - ( S4*sx[1] ); // offset increment for outermost loop - } else { // order === 'column-major' - // For column-major ndarrays, the first dimensions have the fastest changing indices... - S0 = sh[ 0 ]; - S1 = sh[ 1 ]; - S2 = sh[ 2 ]; - S3 = sh[ 3 ]; - S4 = sh[ 4 ]; - S5 = sh[ 5 ]; - dx0 = sx[ 0 ]; // offset increment for innermost loop - dx1 = sx[ 1 ] - ( S0*sx[0] ); - dx2 = sx[ 2 ] - ( S1*sx[1] ); - dx3 = sx[ 3 ] - ( S2*sx[2] ); - dx4 = sx[ 4 ] - ( S3*sx[3] ); - dx5 = sx[ 5 ] - ( S4*sx[4] ); // offset increment for outermost loop - } - // Set a pointer to the first indexed element: - ix = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Cache accessor: - get = x.accessors[ 0 ]; - - // Iterate over the ndarray dimensions... - for ( i5 = 0; i5 < S5; i5++ ) { - for ( i4 = 0; i4 < S4; i4++ ) { - for ( i3 = 0; i3 < S3; i3++ ) { - for ( i2 = 0; i2 < S2; i2++ ) { - for ( i1 = 0; i1 < S1; i1++ ) { - for ( i0 = 0; i0 < S0; i0++ ) { - if ( get( xbuf, ix ) === value ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - ix += dx2; - } - ix += dx3; - } - ix += dx4; - } - ix += dx5; - } - return false; -} - - -// EXPORTS // - -module.exports = includes6d; diff --git a/lib/6d_blocked.js b/lib/6d_blocked.js deleted file mode 100644 index 09e250a..0000000 --- a/lib/6d_blocked.js +++ /dev/null @@ -1,232 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -/* eslint-disable max-depth, max-len */ - -'use strict'; - -// MODULES // - -var loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' ); -var blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' ); - - -// MAIN // - -/** -* Tests whether an ndarray contains a specified value via loop blocking. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {*} value - search element -* @returns {boolean} result -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* // Create a data buffer: -* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 1, 1, 1, 3, 1, 2 ]; -* -* // Define the array strides: -* var sx = [ 12, 12, 12, 4, 4, 1 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'float64', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major' -* }; -* -* // Perform reduction: -* var out = blockedincludes6d( x, 6.0 ); -* // returns true -* -* out = blockedincludes6d( x, 100.0 ); -* // returns false -*/ -function blockedincludes6d( x, value ) { // eslint-disable-line max-statements - var bsize; - var xbuf; - var dx0; - var dx1; - var dx2; - var dx3; - var dx4; - var dx5; - var ox1; - var ox2; - var ox3; - var ox4; - var ox5; - var sh; - var s0; - var s1; - var s2; - var s3; - var s4; - var s5; - var sx; - var ox; - var ix; - var i0; - var i1; - var i2; - var i3; - var i4; - var i5; - var j0; - var j1; - var j2; - var j3; - var j4; - var j5; - var o; - - // Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop... - - // Resolve the loop interchange order: - o = loopOrder( x.shape, x.strides ); - sh = o.sh; - sx = o.sx; - - // Determine the block size: - bsize = blockSize( x.dtype ); - - // Set a pointer to the first indexed element: - ox = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Cache the offset increment for the innermost loop: - dx0 = sx[0]; - - // Iterate over blocks... - for ( j5 = sh[5]; j5 > 0; ) { - if ( j5 < bsize ) { - s5 = j5; - j5 = 0; - } else { - s5 = bsize; - j5 -= bsize; - } - ox5 = ox + ( j5*sx[5] ); - for ( j4 = sh[4]; j4 > 0; ) { - if ( j4 < bsize ) { - s4 = j4; - j4 = 0; - } else { - s4 = bsize; - j4 -= bsize; - } - dx5 = sx[5] - ( s4*sx[4] ); - ox4 = ox5 + ( j4*sx[4] ); - for ( j3 = sh[3]; j3 > 0; ) { - if ( j3 < bsize ) { - s3 = j3; - j3 = 0; - } else { - s3 = bsize; - j3 -= bsize; - } - dx4 = sx[4] - ( s3*sx[3] ); - ox3 = ox4 + ( j3*sx[3] ); - for ( j2 = sh[2]; j2 > 0; ) { - if ( j2 < bsize ) { - s2 = j2; - j2 = 0; - } else { - s2 = bsize; - j2 -= bsize; - } - dx3 = sx[3] - ( s2*sx[2] ); - ox2 = ox3 + ( j2*sx[2] ); - for ( j1 = sh[1]; j1 > 0; ) { - if ( j1 < bsize ) { - s1 = j1; - j1 = 0; - } else { - s1 = bsize; - j1 -= bsize; - } - dx2 = sx[2] - ( s1*sx[1] ); - ox1 = ox2 + ( j1*sx[1] ); - for ( j0 = sh[0]; j0 > 0; ) { - if ( j0 < bsize ) { - s0 = j0; - j0 = 0; - } else { - s0 = bsize; - j0 -= bsize; - } - // Compute the index offset for the first input ndarray element in the current block: - ix = ox1 + ( j0*sx[0] ); - - // Compute the loop offset increment: - dx1 = sx[1] - ( s0*sx[0] ); - - // Iterate over the ndarray dimensions... - for ( i5 = 0; i5 < s5; i5++ ) { - for ( i4 = 0; i4 < s4; i4++ ) { - for ( i3 = 0; i3 < s3; i3++ ) { - for ( i2 = 0; i2 < s2; i2++ ) { - for ( i1 = 0; i1 < s1; i1++ ) { - for ( i0 = 0; i0 < s0; i0++ ) { - if ( xbuf[ ix ] === value ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - ix += dx2; - } - ix += dx3; - } - ix += dx4; - } - ix += dx5; - } - } - } - } - } - } - } - return false; -} - - -// EXPORTS // - -module.exports = blockedincludes6d; diff --git a/lib/6d_blocked_accessors.js b/lib/6d_blocked_accessors.js deleted file mode 100644 index 44664b6..0000000 --- a/lib/6d_blocked_accessors.js +++ /dev/null @@ -1,239 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -/* eslint-disable max-depth, max-len */ - -'use strict'; - -// MODULES // - -var loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' ); -var blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' ); - - -// MAIN // - -/** -* Tests whether an ndarray contains a specified value via loop blocking. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {Array} x.accessors - data buffer accessors -* @param {*} value - search element -* @returns {boolean} result -* -* @example -* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -* var accessors = require( '@stdlib/array-base-accessors' ); -* -* // Create a data buffer: -* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 1, 1, 1, 1, 2, 2 ]; -* -* // Define the array strides: -* var sx = [ 8, 8, 8, 8, 4, 1 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'generic', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major', -* 'accessors': accessors( xbuf ).accessors -* }; -* -* // Perform reduction: -* var out = blockedincludes6d( x, 6.0 ); -* // returns true -* -* out = blockedincludes6d( x, 100.0 ); -* // returns false -*/ -function blockedincludes6d( x, value ) { // eslint-disable-line max-statements - var bsize; - var xbuf; - var get; - var dx0; - var dx1; - var dx2; - var dx3; - var dx4; - var dx5; - var ox1; - var ox2; - var ox3; - var ox4; - var ox5; - var sh; - var s0; - var s1; - var s2; - var s3; - var s4; - var s5; - var sx; - var ox; - var ix; - var i0; - var i1; - var i2; - var i3; - var i4; - var i5; - var j0; - var j1; - var j2; - var j3; - var j4; - var j5; - var o; - - // Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop... - - // Resolve the loop interchange order: - o = loopOrder( x.shape, x.strides ); - sh = o.sh; - sx = o.sx; - - // Determine the block size: - bsize = blockSize( x.dtype ); - - // Set a pointer to the first indexed element: - ox = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Cache the offset increment for the innermost loop: - dx0 = sx[0]; - - // Cache accessor: - get = x.accessors[0]; - - // Iterate over blocks... - for ( j5 = sh[5]; j5 > 0; ) { - if ( j5 < bsize ) { - s5 = j5; - j5 = 0; - } else { - s5 = bsize; - j5 -= bsize; - } - ox5 = ox + ( j5*sx[5] ); - for ( j4 = sh[4]; j4 > 0; ) { - if ( j4 < bsize ) { - s4 = j4; - j4 = 0; - } else { - s4 = bsize; - j4 -= bsize; - } - dx5 = sx[5] - ( s4*sx[4] ); - ox4 = ox5 + ( j4*sx[4] ); - for ( j3 = sh[3]; j3 > 0; ) { - if ( j3 < bsize ) { - s3 = j3; - j3 = 0; - } else { - s3 = bsize; - j3 -= bsize; - } - dx4 = sx[4] - ( s3*sx[3] ); - ox3 = ox4 + ( j3*sx[3] ); - for ( j2 = sh[2]; j2 > 0; ) { - if ( j2 < bsize ) { - s2 = j2; - j2 = 0; - } else { - s2 = bsize; - j2 -= bsize; - } - dx3 = sx[3] - ( s2*sx[2] ); - ox2 = ox3 + ( j2*sx[2] ); - for ( j1 = sh[1]; j1 > 0; ) { - if ( j1 < bsize ) { - s1 = j1; - j1 = 0; - } else { - s1 = bsize; - j1 -= bsize; - } - dx2 = sx[2] - ( s1*sx[1] ); - ox1 = ox2 + ( j1*sx[1] ); - for ( j0 = sh[0]; j0 > 0; ) { - if ( j0 < bsize ) { - s0 = j0; - j0 = 0; - } else { - s0 = bsize; - j0 -= bsize; - } - // Compute the index offset for the first input ndarray element in the current block: - ix = ox1 + ( j0*sx[0] ); - - // Compute the loop offset increment: - dx1 = sx[1] - ( s0*sx[0] ); - - // Iterate over the ndarray dimensions... - for ( i5 = 0; i5 < s5; i5++ ) { - for ( i4 = 0; i4 < s4; i4++ ) { - for ( i3 = 0; i3 < s3; i3++ ) { - for ( i2 = 0; i2 < s2; i2++ ) { - for ( i1 = 0; i1 < s1; i1++ ) { - for ( i0 = 0; i0 < s0; i0++ ) { - if ( get( xbuf, ix ) === value ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - ix += dx2; - } - ix += dx3; - } - ix += dx4; - } - ix += dx5; - } - } - } - } - } - } - } - return false; -} - - -// EXPORTS // - -module.exports = blockedincludes6d; diff --git a/lib/6d_blocked_complex.js b/lib/6d_blocked_complex.js deleted file mode 100644 index 0d5875e..0000000 --- a/lib/6d_blocked_complex.js +++ /dev/null @@ -1,240 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -/* eslint-disable max-depth, max-len */ - -'use strict'; - -// MODULES // - -var loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' ); -var blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' ); - - -// MAIN // - -/** -* Tests whether a reinterpreted complex number ndarray contains a specified value via loop blocking. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {ComplexLike} value - search element -* @returns {boolean} result -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* // Create a data buffer: -* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 1, 1, 1, 1, 2, 2 ]; -* -* // Define the array strides: -* var sx = [ 8, 8, 8, 8, 4, 2 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'complex128', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major' -* }; -* -* // Perform reduction: -* var v = { -* 're': 3.0, -* 'im': 4.0 -* }; -* var out = blockedincludes6d( x, v ); -* // returns true -* -* v = { -* 're': -3.0, -* 'im': -4.0 -* }; -* out = blockedincludes6d( x, v ); -* // returns false -*/ -function blockedincludes6d( x, value ) { // eslint-disable-line max-statements - var bsize; - var xbuf; - var dx0; - var dx1; - var dx2; - var dx3; - var dx4; - var dx5; - var ox1; - var ox2; - var ox3; - var ox4; - var ox5; - var sh; - var s0; - var s1; - var s2; - var s3; - var s4; - var s5; - var sx; - var ox; - var ix; - var i0; - var i1; - var i2; - var i3; - var i4; - var i5; - var j0; - var j1; - var j2; - var j3; - var j4; - var j5; - var o; - - // Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop... - - // Resolve the loop interchange order: - o = loopOrder( x.shape, x.strides ); - sh = o.sh; - sx = o.sx; - - // Determine the block size: - bsize = blockSize( x.dtype ); - - // Set a pointer to the first indexed element: - ox = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Cache the offset increment for the innermost loop: - dx0 = sx[0]; - - // Iterate over blocks... - for ( j5 = sh[5]; j5 > 0; ) { - if ( j5 < bsize ) { - s5 = j5; - j5 = 0; - } else { - s5 = bsize; - j5 -= bsize; - } - ox5 = ox + ( j5*sx[5] ); - for ( j4 = sh[4]; j4 > 0; ) { - if ( j4 < bsize ) { - s4 = j4; - j4 = 0; - } else { - s4 = bsize; - j4 -= bsize; - } - dx5 = sx[5] - ( s4*sx[4] ); - ox4 = ox5 + ( j4*sx[4] ); - for ( j3 = sh[3]; j3 > 0; ) { - if ( j3 < bsize ) { - s3 = j3; - j3 = 0; - } else { - s3 = bsize; - j3 -= bsize; - } - dx4 = sx[4] - ( s3*sx[3] ); - ox3 = ox4 + ( j3*sx[3] ); - for ( j2 = sh[2]; j2 > 0; ) { - if ( j2 < bsize ) { - s2 = j2; - j2 = 0; - } else { - s2 = bsize; - j2 -= bsize; - } - dx3 = sx[3] - ( s2*sx[2] ); - ox2 = ox3 + ( j2*sx[2] ); - for ( j1 = sh[1]; j1 > 0; ) { - if ( j1 < bsize ) { - s1 = j1; - j1 = 0; - } else { - s1 = bsize; - j1 -= bsize; - } - dx2 = sx[2] - ( s1*sx[1] ); - ox1 = ox2 + ( j1*sx[1] ); - for ( j0 = sh[0]; j0 > 0; ) { - if ( j0 < bsize ) { - s0 = j0; - j0 = 0; - } else { - s0 = bsize; - j0 -= bsize; - } - // Compute the index offset for the first input ndarray element in the current block: - ix = ox1 + ( j0*sx[0] ); - - // Compute the loop offset increment: - dx1 = sx[1] - ( s0*sx[0] ); - - // Iterate over the ndarray dimensions... - for ( i5 = 0; i5 < s5; i5++ ) { - for ( i4 = 0; i4 < s4; i4++ ) { - for ( i3 = 0; i3 < s3; i3++ ) { - for ( i2 = 0; i2 < s2; i2++ ) { - for ( i1 = 0; i1 < s1; i1++ ) { - for ( i0 = 0; i0 < s0; i0++ ) { - if ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - ix += dx2; - } - ix += dx3; - } - ix += dx4; - } - ix += dx5; - } - } - } - } - } - } - } - return false; -} - - -// EXPORTS // - -module.exports = blockedincludes6d; diff --git a/lib/6d_complex.js b/lib/6d_complex.js deleted file mode 100644 index 2d783b2..0000000 --- a/lib/6d_complex.js +++ /dev/null @@ -1,176 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -/* eslint-disable max-depth, max-len */ - -'use strict'; - -// MODULES // - -var strides2order = require( '@stdlib/ndarray-base-strides2order' ); - - -// MAIN // - -/** -* Tests whether a reinterpreted complex number ndarray contains a specified value. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {ComplexLike} value - search element -* @returns {boolean} result -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* // Create a data buffer: -* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 1, 1, 1, 1, 2, 2 ]; -* -* // Define the array strides: -* var sx = [ 8, 8, 8, 8, 4, 2 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'complex128', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major' -* }; -* -* // Perform reduction: -* var v = { -* 're': 3.0, -* 'im': 4.0 -* }; -* var out = includes6d( x, v ); -* // returns true -* -* v = { -* 're': -3.0, -* 'im': -4.0 -* }; -* out = includes6d( x, v ); -* // returns false -*/ -function includes6d( x, value ) { - var xbuf; - var dx0; - var dx1; - var dx2; - var dx3; - var dx4; - var dx5; - var sh; - var S0; - var S1; - var S2; - var S3; - var S4; - var S5; - var sx; - var ix; - var i0; - var i1; - var i2; - var i3; - var i4; - var i5; - - // Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop... - - // Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments... - sh = x.shape; - sx = x.strides; - if ( strides2order( sx ) === 1 ) { - // For row-major ndarrays, the last dimensions have the fastest changing indices... - S0 = sh[ 5 ]; - S1 = sh[ 4 ]; - S2 = sh[ 3 ]; - S3 = sh[ 2 ]; - S4 = sh[ 1 ]; - S5 = sh[ 0 ]; - dx0 = sx[ 5 ]; // offset increment for innermost loop - dx1 = sx[ 4 ] - ( S0*sx[5] ); - dx2 = sx[ 3 ] - ( S1*sx[4] ); - dx3 = sx[ 2 ] - ( S2*sx[3] ); - dx4 = sx[ 1 ] - ( S3*sx[2] ); - dx5 = sx[ 0 ] - ( S4*sx[1] ); // offset increment for outermost loop - } else { // order === 'column-major' - // For column-major ndarrays, the first dimensions have the fastest changing indices... - S0 = sh[ 0 ]; - S1 = sh[ 1 ]; - S2 = sh[ 2 ]; - S3 = sh[ 3 ]; - S4 = sh[ 4 ]; - S5 = sh[ 5 ]; - dx0 = sx[ 0 ]; // offset increment for innermost loop - dx1 = sx[ 1 ] - ( S0*sx[0] ); - dx2 = sx[ 2 ] - ( S1*sx[1] ); - dx3 = sx[ 3 ] - ( S2*sx[2] ); - dx4 = sx[ 4 ] - ( S3*sx[3] ); - dx5 = sx[ 5 ] - ( S4*sx[4] ); // offset increment for outermost loop - } - // Set a pointer to the first indexed element: - ix = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Iterate over the ndarray dimensions... - for ( i5 = 0; i5 < S5; i5++ ) { - for ( i4 = 0; i4 < S4; i4++ ) { - for ( i3 = 0; i3 < S3; i3++ ) { - for ( i2 = 0; i2 < S2; i2++ ) { - for ( i1 = 0; i1 < S1; i1++ ) { - for ( i0 = 0; i0 < S0; i0++ ) { - if ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - ix += dx2; - } - ix += dx3; - } - ix += dx4; - } - ix += dx5; - } - return false; -} - - -// EXPORTS // - -module.exports = includes6d; diff --git a/lib/7d.js b/lib/7d.js deleted file mode 100644 index 1f92648..0000000 --- a/lib/7d.js +++ /dev/null @@ -1,178 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -/* eslint-disable max-depth */ - -'use strict'; - -// MODULES // - -var strides2order = require( '@stdlib/ndarray-base-strides2order' ); - - -// MAIN // - -/** -* Tests whether an ndarray contains a specified value. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {*} value - search element -* @returns {boolean} result -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* // Create a data buffer: -* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 1, 1, 1, 1, 3, 1, 2 ]; -* -* // Define the array strides: -* var sx = [ 12, 12, 12, 12, 4, 4, 1 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'float64', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major' -* }; -* -* // Perform reduction: -* var out = includes7d( x, 6.0 ); -* // returns true -* -* out = includes7d( x, 100.0 ); -* // returns false -*/ -function includes7d( x, value ) { - var xbuf; - var dx0; - var dx1; - var dx2; - var dx3; - var dx4; - var dx5; - var dx6; - var sh; - var S0; - var S1; - var S2; - var S3; - var S4; - var S5; - var S6; - var sx; - var ix; - var i0; - var i1; - var i2; - var i3; - var i4; - var i5; - var i6; - - // Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop... - - // Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments... - sh = x.shape; - sx = x.strides; - if ( strides2order( sx ) === 1 ) { - // For row-major ndarrays, the last dimensions have the fastest changing indices... - S0 = sh[ 6 ]; - S1 = sh[ 5 ]; - S2 = sh[ 4 ]; - S3 = sh[ 3 ]; - S4 = sh[ 2 ]; - S5 = sh[ 1 ]; - S6 = sh[ 0 ]; - dx0 = sx[ 6 ]; // offset increment for innermost loop - dx1 = sx[ 5 ] - ( S0*sx[6] ); - dx2 = sx[ 4 ] - ( S1*sx[5] ); - dx3 = sx[ 3 ] - ( S2*sx[4] ); - dx4 = sx[ 2 ] - ( S3*sx[3] ); - dx5 = sx[ 1 ] - ( S4*sx[2] ); - dx6 = sx[ 0 ] - ( S5*sx[1] ); // offset increment for outermost loop - } else { // order === 'column-major' - // For column-major ndarrays, the first dimensions have the fastest changing indices... - S0 = sh[ 0 ]; - S1 = sh[ 1 ]; - S2 = sh[ 2 ]; - S3 = sh[ 3 ]; - S4 = sh[ 4 ]; - S5 = sh[ 5 ]; - S6 = sh[ 6 ]; - dx0 = sx[ 0 ]; // offset increment for innermost loop - dx1 = sx[ 1 ] - ( S0*sx[0] ); - dx2 = sx[ 2 ] - ( S1*sx[1] ); - dx3 = sx[ 3 ] - ( S2*sx[2] ); - dx4 = sx[ 4 ] - ( S3*sx[3] ); - dx5 = sx[ 5 ] - ( S4*sx[4] ); - dx6 = sx[ 6 ] - ( S5*sx[5] ); // offset increment for outermost loop - } - // Set a pointer to the first indexed element: - ix = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Iterate over the ndarray dimensions... - for ( i6 = 0; i6 < S6; i6++ ) { - for ( i5 = 0; i5 < S5; i5++ ) { - for ( i4 = 0; i4 < S4; i4++ ) { - for ( i3 = 0; i3 < S3; i3++ ) { - for ( i2 = 0; i2 < S2; i2++ ) { - for ( i1 = 0; i1 < S1; i1++ ) { - for ( i0 = 0; i0 < S0; i0++ ) { - if ( xbuf[ ix ] === value ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - ix += dx2; - } - ix += dx3; - } - ix += dx4; - } - ix += dx5; - } - ix += dx6; - } - return false; -} - - -// EXPORTS // - -module.exports = includes7d; diff --git a/lib/7d_accessors.js b/lib/7d_accessors.js deleted file mode 100644 index 6488aa0..0000000 --- a/lib/7d_accessors.js +++ /dev/null @@ -1,185 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -/* eslint-disable max-depth */ - -'use strict'; - -// MODULES // - -var strides2order = require( '@stdlib/ndarray-base-strides2order' ); - - -// MAIN // - -/** -* Tests whether an ndarray contains a specified value. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {Array} x.accessors - data buffer accessors -* @param {*} value - search element -* @returns {boolean} result -* -* @example -* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -* var accessors = require( '@stdlib/array-base-accessors' ); -* -* // Create a data buffer: -* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 1, 1, 1, 1, 1, 2, 2 ]; -* -* // Define the array strides: -* var sx = [ 8, 8, 8, 8, 8, 4, 1 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'generic', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major', -* 'accessors': accessors( xbuf ).accessors -* }; -* -* // Perform reduction: -* var out = includes7d( x, 6.0 ); -* // returns true -* -* out = includes7d( x, 100.0 ); -* // returns false -*/ -function includes7d( x, value ) { - var xbuf; - var get; - var dx0; - var dx1; - var dx2; - var dx3; - var dx4; - var dx5; - var dx6; - var sh; - var S0; - var S1; - var S2; - var S3; - var S4; - var S5; - var S6; - var sx; - var ix; - var i0; - var i1; - var i2; - var i3; - var i4; - var i5; - var i6; - - // Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop... - - // Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments... - sh = x.shape; - sx = x.strides; - if ( strides2order( sx ) === 1 ) { - // For row-major ndarrays, the last dimensions have the fastest changing indices... - S0 = sh[ 6 ]; - S1 = sh[ 5 ]; - S2 = sh[ 4 ]; - S3 = sh[ 3 ]; - S4 = sh[ 2 ]; - S5 = sh[ 1 ]; - S6 = sh[ 0 ]; - dx0 = sx[ 6 ]; // offset increment for innermost loop - dx1 = sx[ 5 ] - ( S0*sx[6] ); - dx2 = sx[ 4 ] - ( S1*sx[5] ); - dx3 = sx[ 3 ] - ( S2*sx[4] ); - dx4 = sx[ 2 ] - ( S3*sx[3] ); - dx5 = sx[ 1 ] - ( S4*sx[2] ); - dx6 = sx[ 0 ] - ( S5*sx[1] ); // offset increment for outermost loop - } else { // order === 'column-major' - // For column-major ndarrays, the first dimensions have the fastest changing indices... - S0 = sh[ 0 ]; - S1 = sh[ 1 ]; - S2 = sh[ 2 ]; - S3 = sh[ 3 ]; - S4 = sh[ 4 ]; - S5 = sh[ 5 ]; - S6 = sh[ 6 ]; - dx0 = sx[ 0 ]; // offset increment for innermost loop - dx1 = sx[ 1 ] - ( S0*sx[0] ); - dx2 = sx[ 2 ] - ( S1*sx[1] ); - dx3 = sx[ 3 ] - ( S2*sx[2] ); - dx4 = sx[ 4 ] - ( S3*sx[3] ); - dx5 = sx[ 5 ] - ( S4*sx[4] ); - dx6 = sx[ 6 ] - ( S5*sx[5] ); // offset increment for outermost loop - } - // Set a pointer to the first indexed element: - ix = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Cache accessor: - get = x.accessors[ 0 ]; - - // Iterate over the ndarray dimensions... - for ( i6 = 0; i6 < S6; i6++ ) { - for ( i5 = 0; i5 < S5; i5++ ) { - for ( i4 = 0; i4 < S4; i4++ ) { - for ( i3 = 0; i3 < S3; i3++ ) { - for ( i2 = 0; i2 < S2; i2++ ) { - for ( i1 = 0; i1 < S1; i1++ ) { - for ( i0 = 0; i0 < S0; i0++ ) { - if ( get( xbuf, ix ) === value ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - ix += dx2; - } - ix += dx3; - } - ix += dx4; - } - ix += dx5; - } - ix += dx6; - } - return false; -} - - -// EXPORTS // - -module.exports = includes7d; diff --git a/lib/7d_blocked.js b/lib/7d_blocked.js deleted file mode 100644 index ef9f1b4..0000000 --- a/lib/7d_blocked.js +++ /dev/null @@ -1,251 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -/* eslint-disable max-depth, max-len */ - -'use strict'; - -// MODULES // - -var loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' ); -var blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' ); - - -// MAIN // - -/** -* Tests whether an ndarray contains a specified value via loop blocking. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {*} value - search element -* @returns {boolean} result -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* // Create a data buffer: -* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 1, 1, 1, 1, 3, 1, 2 ]; -* -* // Define the array strides: -* var sx = [ 12, 12, 12, 12, 4, 4, 1 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'float64', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major' -* }; -* -* // Perform reduction: -* var out = blockedincludes7d( x, 6.0 ); -* // returns true -* -* out = blockedincludes7d( x, 100.0 ); -* // returns false -*/ -function blockedincludes7d( x, value ) { // eslint-disable-line max-statements - var bsize; - var xbuf; - var dx0; - var dx1; - var dx2; - var dx3; - var dx4; - var dx5; - var dx6; - var ox1; - var ox2; - var ox3; - var ox4; - var ox5; - var ox6; - var sh; - var s0; - var s1; - var s2; - var s3; - var s4; - var s5; - var s6; - var sx; - var ox; - var ix; - var i0; - var i1; - var i2; - var i3; - var i4; - var i5; - var i6; - var j0; - var j1; - var j2; - var j3; - var j4; - var j5; - var j6; - var o; - - // Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop... - - // Resolve the loop interchange order: - o = loopOrder( x.shape, x.strides ); - sh = o.sh; - sx = o.sx; - - // Determine the block size: - bsize = blockSize( x.dtype ); - - // Set a pointer to the first indexed element: - ox = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Cache the offset increment for the innermost loop: - dx0 = sx[0]; - - // Iterate over blocks... - for ( j6 = sh[6]; j6 > 0; ) { - if ( j6 < bsize ) { - s6 = j6; - j6 = 0; - } else { - s6 = bsize; - j6 -= bsize; - } - ox6 = ox + ( j6*sx[6] ); - for ( j5 = sh[5]; j5 > 0; ) { - if ( j5 < bsize ) { - s5 = j5; - j5 = 0; - } else { - s5 = bsize; - j5 -= bsize; - } - dx6 = sx[6] - ( s5*sx[5] ); - ox5 = ox6 + ( j5*sx[5] ); - for ( j4 = sh[4]; j4 > 0; ) { - if ( j4 < bsize ) { - s4 = j4; - j4 = 0; - } else { - s4 = bsize; - j4 -= bsize; - } - dx5 = sx[5] - ( s4*sx[4] ); - ox4 = ox5 + ( j4*sx[4] ); - for ( j3 = sh[3]; j3 > 0; ) { - if ( j3 < bsize ) { - s3 = j3; - j3 = 0; - } else { - s3 = bsize; - j3 -= bsize; - } - dx4 = sx[4] - ( s3*sx[3] ); - ox3 = ox4 + ( j3*sx[3] ); - for ( j2 = sh[2]; j2 > 0; ) { - if ( j2 < bsize ) { - s2 = j2; - j2 = 0; - } else { - s2 = bsize; - j2 -= bsize; - } - dx3 = sx[3] - ( s2*sx[2] ); - ox2 = ox3 + ( j2*sx[2] ); - for ( j1 = sh[1]; j1 > 0; ) { - if ( j1 < bsize ) { - s1 = j1; - j1 = 0; - } else { - s1 = bsize; - j1 -= bsize; - } - dx2 = sx[2] - ( s1*sx[1] ); - ox1 = ox2 + ( j1*sx[1] ); - for ( j0 = sh[0]; j0 > 0; ) { - if ( j0 < bsize ) { - s0 = j0; - j0 = 0; - } else { - s0 = bsize; - j0 -= bsize; - } - // Compute the index offset for the first input ndarray element in the current block: - ix = ox1 + ( j0*sx[0] ); - - // Compute the loop offset increment: - dx1 = sx[1] - ( s0*sx[0] ); - - // Iterate over the ndarray dimensions... - for ( i6 = 0; i6 < s6; i6++ ) { - for ( i5 = 0; i5 < s5; i5++ ) { - for ( i4 = 0; i4 < s4; i4++ ) { - for ( i3 = 0; i3 < s3; i3++ ) { - for ( i2 = 0; i2 < s2; i2++ ) { - for ( i1 = 0; i1 < s1; i1++ ) { - for ( i0 = 0; i0 < s0; i0++ ) { - if ( xbuf[ ix ] === value ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - ix += dx2; - } - ix += dx3; - } - ix += dx4; - } - ix += dx5; - } - ix += dx6; - } - } - } - } - } - } - } - } - return false; -} - - -// EXPORTS // - -module.exports = blockedincludes7d; diff --git a/lib/7d_blocked_accessors.js b/lib/7d_blocked_accessors.js deleted file mode 100644 index 625021c..0000000 --- a/lib/7d_blocked_accessors.js +++ /dev/null @@ -1,258 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -/* eslint-disable max-depth, max-len */ - -'use strict'; - -// MODULES // - -var loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' ); -var blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' ); - - -// MAIN // - -/** -* Tests whether an ndarray contains a specified value via loop blocking. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {Array} x.accessors - data buffer accessors -* @param {*} value - search element -* @returns {boolean} result -* -* @example -* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -* var accessors = require( '@stdlib/array-base-accessors' ); -* -* // Create a data buffer: -* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 1, 1, 1, 1, 1, 2, 2 ]; -* -* // Define the array strides: -* var sx = [ 8, 8, 8, 8, 8, 4, 1 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'generic', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major', -* 'accessors': accessors( xbuf ).accessors -* }; -* -* // Perform reduction: -* var out = blockedincludes7d( x, 6.0 ); -* // returns true -* -* out = blockedincludes7d( x, 100.0 ); -* // returns false -*/ -function blockedincludes7d( x, value ) { // eslint-disable-line max-statements - var bsize; - var xbuf; - var get; - var dx0; - var dx1; - var dx2; - var dx3; - var dx4; - var dx5; - var dx6; - var ox1; - var ox2; - var ox3; - var ox4; - var ox5; - var ox6; - var sh; - var s0; - var s1; - var s2; - var s3; - var s4; - var s5; - var s6; - var sx; - var ox; - var ix; - var i0; - var i1; - var i2; - var i3; - var i4; - var i5; - var i6; - var j0; - var j1; - var j2; - var j3; - var j4; - var j5; - var j6; - var o; - - // Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop... - - // Resolve the loop interchange order: - o = loopOrder( x.shape, x.strides ); - sh = o.sh; - sx = o.sx; - - // Determine the block size: - bsize = blockSize( x.dtype ); - - // Set a pointer to the first indexed element: - ox = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Cache the offset increment for the innermost loop: - dx0 = sx[0]; - - // Cache accessor: - get = x.accessors[0]; - - // Iterate over blocks... - for ( j6 = sh[6]; j6 > 0; ) { - if ( j6 < bsize ) { - s6 = j6; - j6 = 0; - } else { - s6 = bsize; - j6 -= bsize; - } - ox6 = ox + ( j6*sx[6] ); - for ( j5 = sh[5]; j5 > 0; ) { - if ( j5 < bsize ) { - s5 = j5; - j5 = 0; - } else { - s5 = bsize; - j5 -= bsize; - } - dx6 = sx[6] - ( s5*sx[5] ); - ox5 = ox6 + ( j5*sx[5] ); - for ( j4 = sh[4]; j4 > 0; ) { - if ( j4 < bsize ) { - s4 = j4; - j4 = 0; - } else { - s4 = bsize; - j4 -= bsize; - } - dx5 = sx[5] - ( s4*sx[4] ); - ox4 = ox5 + ( j4*sx[4] ); - for ( j3 = sh[3]; j3 > 0; ) { - if ( j3 < bsize ) { - s3 = j3; - j3 = 0; - } else { - s3 = bsize; - j3 -= bsize; - } - dx4 = sx[4] - ( s3*sx[3] ); - ox3 = ox4 + ( j3*sx[3] ); - for ( j2 = sh[2]; j2 > 0; ) { - if ( j2 < bsize ) { - s2 = j2; - j2 = 0; - } else { - s2 = bsize; - j2 -= bsize; - } - dx3 = sx[3] - ( s2*sx[2] ); - ox2 = ox3 + ( j2*sx[2] ); - for ( j1 = sh[1]; j1 > 0; ) { - if ( j1 < bsize ) { - s1 = j1; - j1 = 0; - } else { - s1 = bsize; - j1 -= bsize; - } - dx2 = sx[2] - ( s1*sx[1] ); - ox1 = ox2 + ( j1*sx[1] ); - for ( j0 = sh[0]; j0 > 0; ) { - if ( j0 < bsize ) { - s0 = j0; - j0 = 0; - } else { - s0 = bsize; - j0 -= bsize; - } - // Compute the index offset for the first input ndarray element in the current block: - ix = ox1 + ( j0*sx[0] ); - - // Compute the loop offset increment: - dx1 = sx[1] - ( s0*sx[0] ); - - // Iterate over the ndarray dimensions... - for ( i6 = 0; i6 < s6; i6++ ) { - for ( i5 = 0; i5 < s5; i5++ ) { - for ( i4 = 0; i4 < s4; i4++ ) { - for ( i3 = 0; i3 < s3; i3++ ) { - for ( i2 = 0; i2 < s2; i2++ ) { - for ( i1 = 0; i1 < s1; i1++ ) { - for ( i0 = 0; i0 < s0; i0++ ) { - if ( get( xbuf, ix ) === value ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - ix += dx2; - } - ix += dx3; - } - ix += dx4; - } - ix += dx5; - } - ix += dx6; - } - } - } - } - } - } - } - } - return false; -} - - -// EXPORTS // - -module.exports = blockedincludes7d; diff --git a/lib/7d_blocked_complex.js b/lib/7d_blocked_complex.js deleted file mode 100644 index 3439ea5..0000000 --- a/lib/7d_blocked_complex.js +++ /dev/null @@ -1,259 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -/* eslint-disable max-depth, max-len */ - -'use strict'; - -// MODULES // - -var loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' ); -var blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' ); - - -// MAIN // - -/** -* Tests whether a reinterpreted complex number ndarray contains a specified value via loop blocking. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {ComplexLike} value - search element -* @returns {boolean} result -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* // Create a data buffer: -* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 1, 1, 1, 1, 1, 2, 2 ]; -* -* // Define the array strides: -* var sx = [ 8, 8, 8, 8, 8, 4, 2 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'complex128', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major' -* }; -* -* // Perform reduction: -* var v = { -* 're': 3.0, -* 'im': 4.0 -* }; -* var out = blockedincludes7d( x, v ); -* // returns true -* -* v = { -* 're': -3.0, -* 'im': -4.0 -* }; -* out = blockedincludes7d( x, v ); -* // returns false -*/ -function blockedincludes7d( x, value ) { // eslint-disable-line max-statements - var bsize; - var xbuf; - var dx0; - var dx1; - var dx2; - var dx3; - var dx4; - var dx5; - var dx6; - var ox1; - var ox2; - var ox3; - var ox4; - var ox5; - var ox6; - var sh; - var s0; - var s1; - var s2; - var s3; - var s4; - var s5; - var s6; - var sx; - var ox; - var ix; - var i0; - var i1; - var i2; - var i3; - var i4; - var i5; - var i6; - var j0; - var j1; - var j2; - var j3; - var j4; - var j5; - var j6; - var o; - - // Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop... - - // Resolve the loop interchange order: - o = loopOrder( x.shape, x.strides ); - sh = o.sh; - sx = o.sx; - - // Determine the block size: - bsize = blockSize( x.dtype ); - - // Set a pointer to the first indexed element: - ox = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Cache the offset increment for the innermost loop: - dx0 = sx[0]; - - // Iterate over blocks... - for ( j6 = sh[6]; j6 > 0; ) { - if ( j6 < bsize ) { - s6 = j6; - j6 = 0; - } else { - s6 = bsize; - j6 -= bsize; - } - ox6 = ox + ( j6*sx[6] ); - for ( j5 = sh[5]; j5 > 0; ) { - if ( j5 < bsize ) { - s5 = j5; - j5 = 0; - } else { - s5 = bsize; - j5 -= bsize; - } - dx6 = sx[6] - ( s5*sx[5] ); - ox5 = ox6 + ( j5*sx[5] ); - for ( j4 = sh[4]; j4 > 0; ) { - if ( j4 < bsize ) { - s4 = j4; - j4 = 0; - } else { - s4 = bsize; - j4 -= bsize; - } - dx5 = sx[5] - ( s4*sx[4] ); - ox4 = ox5 + ( j4*sx[4] ); - for ( j3 = sh[3]; j3 > 0; ) { - if ( j3 < bsize ) { - s3 = j3; - j3 = 0; - } else { - s3 = bsize; - j3 -= bsize; - } - dx4 = sx[4] - ( s3*sx[3] ); - ox3 = ox4 + ( j3*sx[3] ); - for ( j2 = sh[2]; j2 > 0; ) { - if ( j2 < bsize ) { - s2 = j2; - j2 = 0; - } else { - s2 = bsize; - j2 -= bsize; - } - dx3 = sx[3] - ( s2*sx[2] ); - ox2 = ox3 + ( j2*sx[2] ); - for ( j1 = sh[1]; j1 > 0; ) { - if ( j1 < bsize ) { - s1 = j1; - j1 = 0; - } else { - s1 = bsize; - j1 -= bsize; - } - dx2 = sx[2] - ( s1*sx[1] ); - ox1 = ox2 + ( j1*sx[1] ); - for ( j0 = sh[0]; j0 > 0; ) { - if ( j0 < bsize ) { - s0 = j0; - j0 = 0; - } else { - s0 = bsize; - j0 -= bsize; - } - // Compute the index offset for the first input ndarray element in the current block: - ix = ox1 + ( j0*sx[0] ); - - // Compute the loop offset increment: - dx1 = sx[1] - ( s0*sx[0] ); - - // Iterate over the ndarray dimensions... - for ( i6 = 0; i6 < s6; i6++ ) { - for ( i5 = 0; i5 < s5; i5++ ) { - for ( i4 = 0; i4 < s4; i4++ ) { - for ( i3 = 0; i3 < s3; i3++ ) { - for ( i2 = 0; i2 < s2; i2++ ) { - for ( i1 = 0; i1 < s1; i1++ ) { - for ( i0 = 0; i0 < s0; i0++ ) { - if ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - ix += dx2; - } - ix += dx3; - } - ix += dx4; - } - ix += dx5; - } - ix += dx6; - } - } - } - } - } - } - } - } - return false; -} - - -// EXPORTS // - -module.exports = blockedincludes7d; diff --git a/lib/7d_complex.js b/lib/7d_complex.js deleted file mode 100644 index 91ddf69..0000000 --- a/lib/7d_complex.js +++ /dev/null @@ -1,186 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -/* eslint-disable max-depth, max-len */ - -'use strict'; - -// MODULES // - -var strides2order = require( '@stdlib/ndarray-base-strides2order' ); - - -// MAIN // - -/** -* Tests whether a reinterpreted complex number ndarray contains a specified value. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {ComplexLike} value - search element -* @returns {boolean} result -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* // Create a data buffer: -* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 1, 1, 1, 1, 1, 2, 2 ]; -* -* // Define the array strides: -* var sx = [ 8, 8, 8, 8, 8, 4, 2 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'complex128', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major' -* }; -* -* // Perform reduction: -* var v = { -* 're': 3.0, -* 'im': 4.0 -* }; -* var out = includes7d( x, v ); -* // returns true -* -* v = { -* 're': -3.0, -* 'im': -4.0 -* }; -* out = includes7d( x, v ); -* // returns false -*/ -function includes7d( x, value ) { - var xbuf; - var dx0; - var dx1; - var dx2; - var dx3; - var dx4; - var dx5; - var dx6; - var sh; - var S0; - var S1; - var S2; - var S3; - var S4; - var S5; - var S6; - var sx; - var ix; - var i0; - var i1; - var i2; - var i3; - var i4; - var i5; - var i6; - - // Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop... - - // Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments... - sh = x.shape; - sx = x.strides; - if ( strides2order( sx ) === 1 ) { - // For row-major ndarrays, the last dimensions have the fastest changing indices... - S0 = sh[ 6 ]; - S1 = sh[ 5 ]; - S2 = sh[ 4 ]; - S3 = sh[ 3 ]; - S4 = sh[ 2 ]; - S5 = sh[ 1 ]; - S6 = sh[ 0 ]; - dx0 = sx[ 6 ]; // offset increment for innermost loop - dx1 = sx[ 5 ] - ( S0*sx[6] ); - dx2 = sx[ 4 ] - ( S1*sx[5] ); - dx3 = sx[ 3 ] - ( S2*sx[4] ); - dx4 = sx[ 2 ] - ( S3*sx[3] ); - dx5 = sx[ 1 ] - ( S4*sx[2] ); - dx6 = sx[ 0 ] - ( S5*sx[1] ); // offset increment for outermost loop - } else { // order === 'column-major' - // For column-major ndarrays, the first dimensions have the fastest changing indices... - S0 = sh[ 0 ]; - S1 = sh[ 1 ]; - S2 = sh[ 2 ]; - S3 = sh[ 3 ]; - S4 = sh[ 4 ]; - S5 = sh[ 5 ]; - S6 = sh[ 6 ]; - dx0 = sx[ 0 ]; // offset increment for innermost loop - dx1 = sx[ 1 ] - ( S0*sx[0] ); - dx2 = sx[ 2 ] - ( S1*sx[1] ); - dx3 = sx[ 3 ] - ( S2*sx[2] ); - dx4 = sx[ 4 ] - ( S3*sx[3] ); - dx5 = sx[ 5 ] - ( S4*sx[4] ); - dx6 = sx[ 6 ] - ( S5*sx[5] ); // offset increment for outermost loop - } - // Set a pointer to the first indexed element: - ix = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Iterate over the ndarray dimensions... - for ( i6 = 0; i6 < S6; i6++ ) { - for ( i5 = 0; i5 < S5; i5++ ) { - for ( i4 = 0; i4 < S4; i4++ ) { - for ( i3 = 0; i3 < S3; i3++ ) { - for ( i2 = 0; i2 < S2; i2++ ) { - for ( i1 = 0; i1 < S1; i1++ ) { - for ( i0 = 0; i0 < S0; i0++ ) { - if ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - ix += dx2; - } - ix += dx3; - } - ix += dx4; - } - ix += dx5; - } - ix += dx6; - } - return false; -} - - -// EXPORTS // - -module.exports = includes7d; diff --git a/lib/8d.js b/lib/8d.js deleted file mode 100644 index 6dd9fe0..0000000 --- a/lib/8d.js +++ /dev/null @@ -1,188 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -/* eslint-disable max-depth */ - -'use strict'; - -// MODULES // - -var strides2order = require( '@stdlib/ndarray-base-strides2order' ); - - -// MAIN // - -/** -* Tests whether an ndarray contains a specified value. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {*} value - search element -* @returns {boolean} result -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* // Create a data buffer: -* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 1, 1, 1, 1, 1, 3, 1, 2 ]; -* -* // Define the array strides: -* var sx = [ 12, 12, 12, 12, 12, 4, 4, 1 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'float64', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major' -* }; -* -* // Perform reduction: -* var out = includes8d( x, 6.0 ); -* // returns true -* -* out = includes8d( x, 100.0 ); -* // returns false -*/ -function includes8d( x, value ) { - var xbuf; - var dx0; - var dx1; - var dx2; - var dx3; - var dx4; - var dx5; - var dx6; - var dx7; - var sh; - var S0; - var S1; - var S2; - var S3; - var S4; - var S5; - var S6; - var S7; - var sx; - var ix; - var i0; - var i1; - var i2; - var i3; - var i4; - var i5; - var i6; - var i7; - - // Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop... - - // Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments... - sh = x.shape; - sx = x.strides; - if ( strides2order( sx ) === 1 ) { - // For row-major ndarrays, the last dimensions have the fastest changing indices... - S0 = sh[ 7 ]; - S1 = sh[ 6 ]; - S2 = sh[ 5 ]; - S3 = sh[ 4 ]; - S4 = sh[ 3 ]; - S5 = sh[ 2 ]; - S6 = sh[ 1 ]; - S7 = sh[ 0 ]; - dx0 = sx[ 7 ]; // offset increment for innermost loop - dx1 = sx[ 6 ] - ( S0*sx[7] ); - dx2 = sx[ 5 ] - ( S1*sx[6] ); - dx3 = sx[ 4 ] - ( S2*sx[5] ); - dx4 = sx[ 3 ] - ( S3*sx[4] ); - dx5 = sx[ 2 ] - ( S4*sx[3] ); - dx6 = sx[ 1 ] - ( S5*sx[2] ); - dx7 = sx[ 0 ] - ( S6*sx[1] ); // offset increment for outermost loop - } else { // order === 'column-major' - // For column-major ndarrays, the first dimensions have the fastest changing indices... - S0 = sh[ 0 ]; - S1 = sh[ 1 ]; - S2 = sh[ 2 ]; - S3 = sh[ 3 ]; - S4 = sh[ 4 ]; - S5 = sh[ 5 ]; - S6 = sh[ 6 ]; - S7 = sh[ 7 ]; - dx0 = sx[ 0 ]; // offset increment for innermost loop - dx1 = sx[ 1 ] - ( S0*sx[0] ); - dx2 = sx[ 2 ] - ( S1*sx[1] ); - dx3 = sx[ 3 ] - ( S2*sx[2] ); - dx4 = sx[ 4 ] - ( S3*sx[3] ); - dx5 = sx[ 5 ] - ( S4*sx[4] ); - dx6 = sx[ 6 ] - ( S5*sx[5] ); - dx7 = sx[ 7 ] - ( S6*sx[6] ); // offset increment for outermost loop - } - // Set a pointer to the first indexed element: - ix = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Iterate over the ndarray dimensions... - for ( i7 = 0; i7 < S7; i7++ ) { - for ( i6 = 0; i6 < S6; i6++ ) { - for ( i5 = 0; i5 < S5; i5++ ) { - for ( i4 = 0; i4 < S4; i4++ ) { - for ( i3 = 0; i3 < S3; i3++ ) { - for ( i2 = 0; i2 < S2; i2++ ) { - for ( i1 = 0; i1 < S1; i1++ ) { - for ( i0 = 0; i0 < S0; i0++ ) { - if ( xbuf[ ix ] === value ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - ix += dx2; - } - ix += dx3; - } - ix += dx4; - } - ix += dx5; - } - ix += dx6; - } - ix += dx7; - } - return false; -} - - -// EXPORTS // - -module.exports = includes8d; diff --git a/lib/8d_accessors.js b/lib/8d_accessors.js deleted file mode 100644 index e3960f2..0000000 --- a/lib/8d_accessors.js +++ /dev/null @@ -1,195 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -/* eslint-disable max-depth */ - -'use strict'; - -// MODULES // - -var strides2order = require( '@stdlib/ndarray-base-strides2order' ); - - -// MAIN // - -/** -* Tests whether an ndarray contains a specified value. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {Array} x.accessors - data buffer accessors -* @param {*} value - search element -* @returns {boolean} result -* -* @example -* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -* var accessors = require( '@stdlib/array-base-accessors' ); -* -* // Create a data buffer: -* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 1, 1, 1, 1, 1, 1, 2, 2 ]; -* -* // Define the array strides: -* var sx = [ 8, 8, 8, 8, 8, 8, 4, 1 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'generic', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major', -* 'accessors': accessors( xbuf ).accessors -* }; -* -* // Perform reduction: -* var out = includes8d( x, 6.0 ); -* // returns true -* -* out = includes8d( x, 100.0 ); -* // returns false -*/ -function includes8d( x, value ) { - var xbuf; - var get; - var dx0; - var dx1; - var dx2; - var dx3; - var dx4; - var dx5; - var dx6; - var dx7; - var sh; - var S0; - var S1; - var S2; - var S3; - var S4; - var S5; - var S6; - var S7; - var sx; - var ix; - var i0; - var i1; - var i2; - var i3; - var i4; - var i5; - var i6; - var i7; - - // Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop... - - // Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments... - sh = x.shape; - sx = x.strides; - if ( strides2order( sx ) === 1 ) { - // For row-major ndarrays, the last dimensions have the fastest changing indices... - S0 = sh[ 7 ]; - S1 = sh[ 6 ]; - S2 = sh[ 5 ]; - S3 = sh[ 4 ]; - S4 = sh[ 3 ]; - S5 = sh[ 2 ]; - S6 = sh[ 1 ]; - S7 = sh[ 0 ]; - dx0 = sx[ 7 ]; // offset increment for innermost loop - dx1 = sx[ 6 ] - ( S0*sx[7] ); - dx2 = sx[ 5 ] - ( S1*sx[6] ); - dx3 = sx[ 4 ] - ( S2*sx[5] ); - dx4 = sx[ 3 ] - ( S3*sx[4] ); - dx5 = sx[ 2 ] - ( S4*sx[3] ); - dx6 = sx[ 1 ] - ( S5*sx[2] ); - dx7 = sx[ 0 ] - ( S6*sx[1] ); // offset increment for outermost loop - } else { // order === 'column-major' - // For column-major ndarrays, the first dimensions have the fastest changing indices... - S0 = sh[ 0 ]; - S1 = sh[ 1 ]; - S2 = sh[ 2 ]; - S3 = sh[ 3 ]; - S4 = sh[ 4 ]; - S5 = sh[ 5 ]; - S6 = sh[ 6 ]; - S7 = sh[ 7 ]; - dx0 = sx[ 0 ]; // offset increment for innermost loop - dx1 = sx[ 1 ] - ( S0*sx[0] ); - dx2 = sx[ 2 ] - ( S1*sx[1] ); - dx3 = sx[ 3 ] - ( S2*sx[2] ); - dx4 = sx[ 4 ] - ( S3*sx[3] ); - dx5 = sx[ 5 ] - ( S4*sx[4] ); - dx6 = sx[ 6 ] - ( S5*sx[5] ); - dx7 = sx[ 7 ] - ( S6*sx[6] ); // offset increment for outermost loop - } - // Set a pointer to the first indexed element: - ix = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Cache accessor: - get = x.accessors[ 0 ]; - - // Iterate over the ndarray dimensions... - for ( i7 = 0; i7 < S7; i7++ ) { - for ( i6 = 0; i6 < S6; i6++ ) { - for ( i5 = 0; i5 < S5; i5++ ) { - for ( i4 = 0; i4 < S4; i4++ ) { - for ( i3 = 0; i3 < S3; i3++ ) { - for ( i2 = 0; i2 < S2; i2++ ) { - for ( i1 = 0; i1 < S1; i1++ ) { - for ( i0 = 0; i0 < S0; i0++ ) { - if ( get( xbuf, ix ) === value ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - ix += dx2; - } - ix += dx3; - } - ix += dx4; - } - ix += dx5; - } - ix += dx6; - } - ix += dx7; - } - return false; -} - - -// EXPORTS // - -module.exports = includes8d; diff --git a/lib/8d_blocked.js b/lib/8d_blocked.js deleted file mode 100644 index 24b06a2..0000000 --- a/lib/8d_blocked.js +++ /dev/null @@ -1,270 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -/* eslint-disable max-depth, max-len */ - -'use strict'; - -// MODULES // - -var loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' ); -var blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' ); - - -// MAIN // - -/** -* Tests whether an ndarray contains a specified value via loop blocking. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {*} value - search element -* @returns {boolean} result -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* // Create a data buffer: -* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 1, 1, 1, 1, 1, 3, 1, 2 ]; -* -* // Define the array strides: -* var sx = [ 12, 12, 12, 12, 12, 4, 4, 1 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'float64', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major' -* }; -* -* // Perform reduction: -* var out = blockedincludes8d( x, 6.0 ); -* // returns true -* -* out = blockedincludes8d( x, 100.0 ); -* // returns false -*/ -function blockedincludes8d( x, value ) { // eslint-disable-line max-statements - var bsize; - var xbuf; - var dx0; - var dx1; - var dx2; - var dx3; - var dx4; - var dx5; - var dx6; - var dx7; - var ox1; - var ox2; - var ox3; - var ox4; - var ox5; - var ox6; - var ox7; - var sh; - var s0; - var s1; - var s2; - var s3; - var s4; - var s5; - var s6; - var s7; - var sx; - var ox; - var ix; - var i0; - var i1; - var i2; - var i3; - var i4; - var i5; - var i6; - var i7; - var j0; - var j1; - var j2; - var j3; - var j4; - var j5; - var j6; - var j7; - var o; - - // Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop... - - // Resolve the loop interchange order: - o = loopOrder( x.shape, x.strides ); - sh = o.sh; - sx = o.sx; - - // Determine the block size: - bsize = blockSize( x.dtype ); - - // Set a pointer to the first indexed element: - ox = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Cache the offset increment for the innermost loop: - dx0 = sx[0]; - - // Iterate over blocks... - for ( j7 = sh[7]; j7 > 0; ) { - if ( j7 < bsize ) { - s7 = j7; - j7 = 0; - } else { - s7 = bsize; - j7 -= bsize; - } - ox7 = ox + ( j7*sx[7] ); - for ( j6 = sh[6]; j6 > 0; ) { - if ( j6 < bsize ) { - s6 = j6; - j6 = 0; - } else { - s6 = bsize; - j6 -= bsize; - } - dx7 = sx[7] - ( s6*sx[6] ); - ox6 = ox7 + ( j6*sx[6] ); - for ( j5 = sh[5]; j5 > 0; ) { - if ( j5 < bsize ) { - s5 = j5; - j5 = 0; - } else { - s5 = bsize; - j5 -= bsize; - } - dx6 = sx[6] - ( s5*sx[5] ); - ox5 = ox6 + ( j5*sx[5] ); - for ( j4 = sh[4]; j4 > 0; ) { - if ( j4 < bsize ) { - s4 = j4; - j4 = 0; - } else { - s4 = bsize; - j4 -= bsize; - } - dx5 = sx[5] - ( s4*sx[4] ); - ox4 = ox5 + ( j4*sx[4] ); - for ( j3 = sh[3]; j3 > 0; ) { - if ( j3 < bsize ) { - s3 = j3; - j3 = 0; - } else { - s3 = bsize; - j3 -= bsize; - } - dx4 = sx[4] - ( s3*sx[3] ); - ox3 = ox4 + ( j3*sx[3] ); - for ( j2 = sh[2]; j2 > 0; ) { - if ( j2 < bsize ) { - s2 = j2; - j2 = 0; - } else { - s2 = bsize; - j2 -= bsize; - } - dx3 = sx[3] - ( s2*sx[2] ); - ox2 = ox3 + ( j2*sx[2] ); - for ( j1 = sh[1]; j1 > 0; ) { - if ( j1 < bsize ) { - s1 = j1; - j1 = 0; - } else { - s1 = bsize; - j1 -= bsize; - } - dx2 = sx[2] - ( s1*sx[1] ); - ox1 = ox2 + ( j1*sx[1] ); - for ( j0 = sh[0]; j0 > 0; ) { - if ( j0 < bsize ) { - s0 = j0; - j0 = 0; - } else { - s0 = bsize; - j0 -= bsize; - } - // Compute the index offset for the first input ndarray element in the current block: - ix = ox1 + ( j0*sx[0] ); - - // Compute the loop offset increment: - dx1 = sx[1] - ( s0*sx[0] ); - - // Iterate over the ndarray dimensions... - for ( i7 = 0; i7 < s7; i7++ ) { - for ( i6 = 0; i6 < s6; i6++ ) { - for ( i5 = 0; i5 < s5; i5++ ) { - for ( i4 = 0; i4 < s4; i4++ ) { - for ( i3 = 0; i3 < s3; i3++ ) { - for ( i2 = 0; i2 < s2; i2++ ) { - for ( i1 = 0; i1 < s1; i1++ ) { - for ( i0 = 0; i0 < s0; i0++ ) { - if ( xbuf[ ix ] === value ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - ix += dx2; - } - ix += dx3; - } - ix += dx4; - } - ix += dx5; - } - ix += dx6; - } - ix += dx7; - } - } - } - } - } - } - } - } - } - return false; -} - - -// EXPORTS // - -module.exports = blockedincludes8d; diff --git a/lib/8d_blocked_accessors.js b/lib/8d_blocked_accessors.js deleted file mode 100644 index 0d17390..0000000 --- a/lib/8d_blocked_accessors.js +++ /dev/null @@ -1,277 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -/* eslint-disable max-depth, max-len */ - -'use strict'; - -// MODULES // - -var loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' ); -var blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' ); - - -// MAIN // - -/** -* Tests whether an ndarray contains a specified value via loop blocking. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {Array} x.accessors - data buffer accessors -* @param {*} value - search element -* @returns {boolean} result -* -* @example -* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -* var accessors = require( '@stdlib/array-base-accessors' ); -* -* // Create a data buffer: -* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 1, 1, 1, 1, 1, 1, 2, 2 ]; -* -* // Define the array strides: -* var sx = [ 8, 8, 8, 8, 8, 8, 4, 1 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'generic', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major', -* 'accessors': accessors( xbuf ).accessors -* }; -* -* // Perform reduction: -* var out = blockedincludes8d( x, 6.0 ); -* // returns true -* -* out = blockedincludes8d( x, 100.0 ); -* // returns false -*/ -function blockedincludes8d( x, value ) { // eslint-disable-line max-statements - var bsize; - var xbuf; - var get; - var dx0; - var dx1; - var dx2; - var dx3; - var dx4; - var dx5; - var dx6; - var dx7; - var ox1; - var ox2; - var ox3; - var ox4; - var ox5; - var ox6; - var ox7; - var sh; - var s0; - var s1; - var s2; - var s3; - var s4; - var s5; - var s6; - var s7; - var sx; - var ox; - var ix; - var i0; - var i1; - var i2; - var i3; - var i4; - var i5; - var i6; - var i7; - var j0; - var j1; - var j2; - var j3; - var j4; - var j5; - var j6; - var j7; - var o; - - // Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop... - - // Resolve the loop interchange order: - o = loopOrder( x.shape, x.strides ); - sh = o.sh; - sx = o.sx; - - // Determine the block size: - bsize = blockSize( x.dtype ); - - // Set a pointer to the first indexed element: - ox = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Cache the offset increment for the innermost loop: - dx0 = sx[0]; - - // Cache accessor: - get = x.accessors[0]; - - // Iterate over blocks... - for ( j7 = sh[7]; j7 > 0; ) { - if ( j7 < bsize ) { - s7 = j7; - j7 = 0; - } else { - s7 = bsize; - j7 -= bsize; - } - ox7 = ox + ( j7*sx[7] ); - for ( j6 = sh[6]; j6 > 0; ) { - if ( j6 < bsize ) { - s6 = j6; - j6 = 0; - } else { - s6 = bsize; - j6 -= bsize; - } - dx7 = sx[7] - ( s6*sx[6] ); - ox6 = ox7 + ( j6*sx[6] ); - for ( j5 = sh[5]; j5 > 0; ) { - if ( j5 < bsize ) { - s5 = j5; - j5 = 0; - } else { - s5 = bsize; - j5 -= bsize; - } - dx6 = sx[6] - ( s5*sx[5] ); - ox5 = ox6 + ( j5*sx[5] ); - for ( j4 = sh[4]; j4 > 0; ) { - if ( j4 < bsize ) { - s4 = j4; - j4 = 0; - } else { - s4 = bsize; - j4 -= bsize; - } - dx5 = sx[5] - ( s4*sx[4] ); - ox4 = ox5 + ( j4*sx[4] ); - for ( j3 = sh[3]; j3 > 0; ) { - if ( j3 < bsize ) { - s3 = j3; - j3 = 0; - } else { - s3 = bsize; - j3 -= bsize; - } - dx4 = sx[4] - ( s3*sx[3] ); - ox3 = ox4 + ( j3*sx[3] ); - for ( j2 = sh[2]; j2 > 0; ) { - if ( j2 < bsize ) { - s2 = j2; - j2 = 0; - } else { - s2 = bsize; - j2 -= bsize; - } - dx3 = sx[3] - ( s2*sx[2] ); - ox2 = ox3 + ( j2*sx[2] ); - for ( j1 = sh[1]; j1 > 0; ) { - if ( j1 < bsize ) { - s1 = j1; - j1 = 0; - } else { - s1 = bsize; - j1 -= bsize; - } - dx2 = sx[2] - ( s1*sx[1] ); - ox1 = ox2 + ( j1*sx[1] ); - for ( j0 = sh[0]; j0 > 0; ) { - if ( j0 < bsize ) { - s0 = j0; - j0 = 0; - } else { - s0 = bsize; - j0 -= bsize; - } - // Compute the index offset for the first input ndarray element in the current block: - ix = ox1 + ( j0*sx[0] ); - - // Compute the loop offset increment: - dx1 = sx[1] - ( s0*sx[0] ); - - // Iterate over the ndarray dimensions... - for ( i7 = 0; i7 < s7; i7++ ) { - for ( i6 = 0; i6 < s6; i6++ ) { - for ( i5 = 0; i5 < s5; i5++ ) { - for ( i4 = 0; i4 < s4; i4++ ) { - for ( i3 = 0; i3 < s3; i3++ ) { - for ( i2 = 0; i2 < s2; i2++ ) { - for ( i1 = 0; i1 < s1; i1++ ) { - for ( i0 = 0; i0 < s0; i0++ ) { - if ( get( xbuf, ix ) === value ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - ix += dx2; - } - ix += dx3; - } - ix += dx4; - } - ix += dx5; - } - ix += dx6; - } - ix += dx7; - } - } - } - } - } - } - } - } - } - return false; -} - - -// EXPORTS // - -module.exports = blockedincludes8d; diff --git a/lib/8d_blocked_complex.js b/lib/8d_blocked_complex.js deleted file mode 100644 index 4efd61a..0000000 --- a/lib/8d_blocked_complex.js +++ /dev/null @@ -1,278 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -/* eslint-disable max-depth, max-len */ - -'use strict'; - -// MODULES // - -var loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' ); -var blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' ); - - -// MAIN // - -/** -* Tests whether a reinterpreted complex number ndarray contains a specified value via loop blocking. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {ComplexLike} value - search element -* @returns {boolean} result -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* // Create a data buffer: -* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 1, 1, 1, 1, 1, 1, 2, 2 ]; -* -* // Define the array strides: -* var sx = [ 8, 8, 8, 8, 8, 8, 4, 2 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'complex128', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major' -* }; -* -* // Perform reduction: -* var v = { -* 're': 3.0, -* 'im': 4.0 -* }; -* var out = blockedincludes8d( x, v ); -* // returns true -* -* v = { -* 're': -3.0, -* 'im': -4.0 -* }; -* out = blockedincludes8d( x, v ); -* // returns false -*/ -function blockedincludes8d( x, value ) { // eslint-disable-line max-statements - var bsize; - var xbuf; - var dx0; - var dx1; - var dx2; - var dx3; - var dx4; - var dx5; - var dx6; - var dx7; - var ox1; - var ox2; - var ox3; - var ox4; - var ox5; - var ox6; - var ox7; - var sh; - var s0; - var s1; - var s2; - var s3; - var s4; - var s5; - var s6; - var s7; - var sx; - var ox; - var ix; - var i0; - var i1; - var i2; - var i3; - var i4; - var i5; - var i6; - var i7; - var j0; - var j1; - var j2; - var j3; - var j4; - var j5; - var j6; - var j7; - var o; - - // Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop... - - // Resolve the loop interchange order: - o = loopOrder( x.shape, x.strides ); - sh = o.sh; - sx = o.sx; - - // Determine the block size: - bsize = blockSize( x.dtype ); - - // Set a pointer to the first indexed element: - ox = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Cache the offset increment for the innermost loop: - dx0 = sx[0]; - - // Iterate over blocks... - for ( j7 = sh[7]; j7 > 0; ) { - if ( j7 < bsize ) { - s7 = j7; - j7 = 0; - } else { - s7 = bsize; - j7 -= bsize; - } - ox7 = ox + ( j7*sx[7] ); - for ( j6 = sh[6]; j6 > 0; ) { - if ( j6 < bsize ) { - s6 = j6; - j6 = 0; - } else { - s6 = bsize; - j6 -= bsize; - } - dx7 = sx[7] - ( s6*sx[6] ); - ox6 = ox7 + ( j6*sx[6] ); - for ( j5 = sh[5]; j5 > 0; ) { - if ( j5 < bsize ) { - s5 = j5; - j5 = 0; - } else { - s5 = bsize; - j5 -= bsize; - } - dx6 = sx[6] - ( s5*sx[5] ); - ox5 = ox6 + ( j5*sx[5] ); - for ( j4 = sh[4]; j4 > 0; ) { - if ( j4 < bsize ) { - s4 = j4; - j4 = 0; - } else { - s4 = bsize; - j4 -= bsize; - } - dx5 = sx[5] - ( s4*sx[4] ); - ox4 = ox5 + ( j4*sx[4] ); - for ( j3 = sh[3]; j3 > 0; ) { - if ( j3 < bsize ) { - s3 = j3; - j3 = 0; - } else { - s3 = bsize; - j3 -= bsize; - } - dx4 = sx[4] - ( s3*sx[3] ); - ox3 = ox4 + ( j3*sx[3] ); - for ( j2 = sh[2]; j2 > 0; ) { - if ( j2 < bsize ) { - s2 = j2; - j2 = 0; - } else { - s2 = bsize; - j2 -= bsize; - } - dx3 = sx[3] - ( s2*sx[2] ); - ox2 = ox3 + ( j2*sx[2] ); - for ( j1 = sh[1]; j1 > 0; ) { - if ( j1 < bsize ) { - s1 = j1; - j1 = 0; - } else { - s1 = bsize; - j1 -= bsize; - } - dx2 = sx[2] - ( s1*sx[1] ); - ox1 = ox2 + ( j1*sx[1] ); - for ( j0 = sh[0]; j0 > 0; ) { - if ( j0 < bsize ) { - s0 = j0; - j0 = 0; - } else { - s0 = bsize; - j0 -= bsize; - } - // Compute the index offset for the first input ndarray element in the current block: - ix = ox1 + ( j0*sx[0] ); - - // Compute the loop offset increment: - dx1 = sx[1] - ( s0*sx[0] ); - - // Iterate over the ndarray dimensions... - for ( i7 = 0; i7 < s7; i7++ ) { - for ( i6 = 0; i6 < s6; i6++ ) { - for ( i5 = 0; i5 < s5; i5++ ) { - for ( i4 = 0; i4 < s4; i4++ ) { - for ( i3 = 0; i3 < s3; i3++ ) { - for ( i2 = 0; i2 < s2; i2++ ) { - for ( i1 = 0; i1 < s1; i1++ ) { - for ( i0 = 0; i0 < s0; i0++ ) { - if ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - ix += dx2; - } - ix += dx3; - } - ix += dx4; - } - ix += dx5; - } - ix += dx6; - } - ix += dx7; - } - } - } - } - } - } - } - } - } - return false; -} - - -// EXPORTS // - -module.exports = blockedincludes8d; diff --git a/lib/8d_complex.js b/lib/8d_complex.js deleted file mode 100644 index 6abb100..0000000 --- a/lib/8d_complex.js +++ /dev/null @@ -1,196 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -/* eslint-disable max-depth, max-len */ - -'use strict'; - -// MODULES // - -var strides2order = require( '@stdlib/ndarray-base-strides2order' ); - - -// MAIN // - -/** -* Tests whether a reinterpreted complex number ndarray contains a specified value. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {ComplexLike} value - search element -* @returns {boolean} result -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* // Create a data buffer: -* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 1, 1, 1, 1, 1, 1, 2, 2 ]; -* -* // Define the array strides: -* var sx = [ 8, 8, 8, 8, 8, 8, 4, 2 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'complex128', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major' -* }; -* -* // Perform reduction: -* var v = { -* 're': 3.0, -* 'im': 4.0 -* }; -* var out = includes8d( x, v ); -* // returns true -* -* v = { -* 're': -3.0, -* 'im': -4.0 -* }; -* out = includes8d( x, v ); -* // returns false -*/ -function includes8d( x, value ) { - var xbuf; - var dx0; - var dx1; - var dx2; - var dx3; - var dx4; - var dx5; - var dx6; - var dx7; - var sh; - var S0; - var S1; - var S2; - var S3; - var S4; - var S5; - var S6; - var S7; - var sx; - var ix; - var i0; - var i1; - var i2; - var i3; - var i4; - var i5; - var i6; - var i7; - - // Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop... - - // Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments... - sh = x.shape; - sx = x.strides; - if ( strides2order( sx ) === 1 ) { - // For row-major ndarrays, the last dimensions have the fastest changing indices... - S0 = sh[ 7 ]; - S1 = sh[ 6 ]; - S2 = sh[ 5 ]; - S3 = sh[ 4 ]; - S4 = sh[ 3 ]; - S5 = sh[ 2 ]; - S6 = sh[ 1 ]; - S7 = sh[ 0 ]; - dx0 = sx[ 7 ]; // offset increment for innermost loop - dx1 = sx[ 6 ] - ( S0*sx[7] ); - dx2 = sx[ 5 ] - ( S1*sx[6] ); - dx3 = sx[ 4 ] - ( S2*sx[5] ); - dx4 = sx[ 3 ] - ( S3*sx[4] ); - dx5 = sx[ 2 ] - ( S4*sx[3] ); - dx6 = sx[ 1 ] - ( S5*sx[2] ); - dx7 = sx[ 0 ] - ( S6*sx[1] ); // offset increment for outermost loop - } else { // order === 'column-major' - // For column-major ndarrays, the first dimensions have the fastest changing indices... - S0 = sh[ 0 ]; - S1 = sh[ 1 ]; - S2 = sh[ 2 ]; - S3 = sh[ 3 ]; - S4 = sh[ 4 ]; - S5 = sh[ 5 ]; - S6 = sh[ 6 ]; - S7 = sh[ 7 ]; - dx0 = sx[ 0 ]; // offset increment for innermost loop - dx1 = sx[ 1 ] - ( S0*sx[0] ); - dx2 = sx[ 2 ] - ( S1*sx[1] ); - dx3 = sx[ 3 ] - ( S2*sx[2] ); - dx4 = sx[ 4 ] - ( S3*sx[3] ); - dx5 = sx[ 5 ] - ( S4*sx[4] ); - dx6 = sx[ 6 ] - ( S5*sx[5] ); - dx7 = sx[ 7 ] - ( S6*sx[6] ); // offset increment for outermost loop - } - // Set a pointer to the first indexed element: - ix = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Iterate over the ndarray dimensions... - for ( i7 = 0; i7 < S7; i7++ ) { - for ( i6 = 0; i6 < S6; i6++ ) { - for ( i5 = 0; i5 < S5; i5++ ) { - for ( i4 = 0; i4 < S4; i4++ ) { - for ( i3 = 0; i3 < S3; i3++ ) { - for ( i2 = 0; i2 < S2; i2++ ) { - for ( i1 = 0; i1 < S1; i1++ ) { - for ( i0 = 0; i0 < S0; i0++ ) { - if ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - ix += dx2; - } - ix += dx3; - } - ix += dx4; - } - ix += dx5; - } - ix += dx6; - } - ix += dx7; - } - return false; -} - - -// EXPORTS // - -module.exports = includes8d; diff --git a/lib/9d.js b/lib/9d.js deleted file mode 100644 index 86162c1..0000000 --- a/lib/9d.js +++ /dev/null @@ -1,198 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -/* eslint-disable max-depth */ - -'use strict'; - -// MODULES // - -var strides2order = require( '@stdlib/ndarray-base-strides2order' ); - - -// MAIN // - -/** -* Tests whether an ndarray contains a specified value. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {*} value - search element -* @returns {boolean} result -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* // Create a data buffer: -* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 1, 1, 1, 1, 1, 1, 3, 1, 2 ]; -* -* // Define the array strides: -* var sx = [ 12, 12, 12, 12, 12, 12, 4, 4, 1 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'float64', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major' -* }; -* -* // Perform reduction: -* var out = includes9d( x, 6.0 ); -* // returns true -* -* out = includes9d( x, 100.0 ); -* // returns false -*/ -function includes9d( x, value ) { - var xbuf; - var dx0; - var dx1; - var dx2; - var dx3; - var dx4; - var dx5; - var dx6; - var dx7; - var dx8; - var sh; - var S0; - var S1; - var S2; - var S3; - var S4; - var S5; - var S6; - var S7; - var S8; - var sx; - var ix; - var i0; - var i1; - var i2; - var i3; - var i4; - var i5; - var i6; - var i7; - var i8; - - // Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop... - - // Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments... - sh = x.shape; - sx = x.strides; - if ( strides2order( sx ) === 1 ) { - // For row-major ndarrays, the last dimensions have the fastest changing indices... - S0 = sh[ 8 ]; - S1 = sh[ 7 ]; - S2 = sh[ 6 ]; - S3 = sh[ 5 ]; - S4 = sh[ 4 ]; - S5 = sh[ 3 ]; - S6 = sh[ 2 ]; - S7 = sh[ 1 ]; - S8 = sh[ 0 ]; - dx0 = sx[ 8 ]; // offset increment for innermost loop - dx1 = sx[ 7 ] - ( S0*sx[8] ); - dx2 = sx[ 6 ] - ( S1*sx[7] ); - dx3 = sx[ 5 ] - ( S2*sx[6] ); - dx4 = sx[ 4 ] - ( S3*sx[5] ); - dx5 = sx[ 3 ] - ( S4*sx[4] ); - dx6 = sx[ 2 ] - ( S5*sx[3] ); - dx7 = sx[ 1 ] - ( S6*sx[2] ); - dx8 = sx[ 0 ] - ( S7*sx[1] ); // offset increment for outermost loop - } else { // order === 'column-major' - // For column-major ndarrays, the first dimensions have the fastest changing indices... - S0 = sh[ 0 ]; - S1 = sh[ 1 ]; - S2 = sh[ 2 ]; - S3 = sh[ 3 ]; - S4 = sh[ 4 ]; - S5 = sh[ 5 ]; - S6 = sh[ 6 ]; - S7 = sh[ 7 ]; - S8 = sh[ 8 ]; - dx0 = sx[ 0 ]; // offset increment for innermost loop - dx1 = sx[ 1 ] - ( S0*sx[0] ); - dx2 = sx[ 2 ] - ( S1*sx[1] ); - dx3 = sx[ 3 ] - ( S2*sx[2] ); - dx4 = sx[ 4 ] - ( S3*sx[3] ); - dx5 = sx[ 5 ] - ( S4*sx[4] ); - dx6 = sx[ 6 ] - ( S5*sx[5] ); - dx7 = sx[ 7 ] - ( S6*sx[6] ); - dx8 = sx[ 8 ] - ( S7*sx[7] ); // offset increment for outermost loop - } - // Set a pointer to the first indexed element: - ix = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Iterate over the ndarray dimensions... - for ( i8 = 0; i8 < S8; i8++ ) { - for ( i7 = 0; i7 < S7; i7++ ) { - for ( i6 = 0; i6 < S6; i6++ ) { - for ( i5 = 0; i5 < S5; i5++ ) { - for ( i4 = 0; i4 < S4; i4++ ) { - for ( i3 = 0; i3 < S3; i3++ ) { - for ( i2 = 0; i2 < S2; i2++ ) { - for ( i1 = 0; i1 < S1; i1++ ) { - for ( i0 = 0; i0 < S0; i0++ ) { - if ( xbuf[ ix ] === value ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - ix += dx2; - } - ix += dx3; - } - ix += dx4; - } - ix += dx5; - } - ix += dx6; - } - ix += dx7; - } - ix += dx8; - } - return false; -} - - -// EXPORTS // - -module.exports = includes9d; diff --git a/lib/9d_accessors.js b/lib/9d_accessors.js deleted file mode 100644 index 814a9dd..0000000 --- a/lib/9d_accessors.js +++ /dev/null @@ -1,205 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -/* eslint-disable max-depth */ - -'use strict'; - -// MODULES // - -var strides2order = require( '@stdlib/ndarray-base-strides2order' ); - - -// MAIN // - -/** -* Tests whether an ndarray contains a specified value. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {Array} x.accessors - data buffer accessors -* @param {*} value - search element -* @returns {boolean} result -* -* @example -* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -* var accessors = require( '@stdlib/array-base-accessors' ); -* -* // Create a data buffer: -* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 1, 1, 1, 1, 1, 1, 1, 2, 2 ]; -* -* // Define the array strides: -* var sx = [ 8, 8, 8, 8, 8, 8, 8, 4, 1 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'generic', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major', -* 'accessors': accessors( xbuf ).accessors -* }; -* -* // Perform reduction: -* var out = includes9d( x, 6.0 ); -* // returns true -* -* out = includes9d( x, 100.0 ); -* // returns false -*/ -function includes9d( x, value ) { - var xbuf; - var get; - var dx0; - var dx1; - var dx2; - var dx3; - var dx4; - var dx5; - var dx6; - var dx7; - var dx8; - var sh; - var S0; - var S1; - var S2; - var S3; - var S4; - var S5; - var S6; - var S7; - var S8; - var sx; - var ix; - var i0; - var i1; - var i2; - var i3; - var i4; - var i5; - var i6; - var i7; - var i8; - - // Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop... - - // Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments... - sh = x.shape; - sx = x.strides; - if ( strides2order( sx ) === 1 ) { - // For row-major ndarrays, the last dimensions have the fastest changing indices... - S0 = sh[ 8 ]; - S1 = sh[ 7 ]; - S2 = sh[ 6 ]; - S3 = sh[ 5 ]; - S4 = sh[ 4 ]; - S5 = sh[ 3 ]; - S6 = sh[ 2 ]; - S7 = sh[ 1 ]; - S8 = sh[ 0 ]; - dx0 = sx[ 8 ]; // offset increment for innermost loop - dx1 = sx[ 7 ] - ( S0*sx[8] ); - dx2 = sx[ 6 ] - ( S1*sx[7] ); - dx3 = sx[ 5 ] - ( S2*sx[6] ); - dx4 = sx[ 4 ] - ( S3*sx[5] ); - dx5 = sx[ 3 ] - ( S4*sx[4] ); - dx6 = sx[ 2 ] - ( S5*sx[3] ); - dx7 = sx[ 1 ] - ( S6*sx[2] ); - dx8 = sx[ 0 ] - ( S7*sx[1] ); // offset increment for outermost loop - } else { // order === 'column-major' - // For column-major ndarrays, the first dimensions have the fastest changing indices... - S0 = sh[ 0 ]; - S1 = sh[ 1 ]; - S2 = sh[ 2 ]; - S3 = sh[ 3 ]; - S4 = sh[ 4 ]; - S5 = sh[ 5 ]; - S6 = sh[ 6 ]; - S7 = sh[ 7 ]; - S8 = sh[ 8 ]; - dx0 = sx[ 0 ]; // offset increment for innermost loop - dx1 = sx[ 1 ] - ( S0*sx[0] ); - dx2 = sx[ 2 ] - ( S1*sx[1] ); - dx3 = sx[ 3 ] - ( S2*sx[2] ); - dx4 = sx[ 4 ] - ( S3*sx[3] ); - dx5 = sx[ 5 ] - ( S4*sx[4] ); - dx6 = sx[ 6 ] - ( S5*sx[5] ); - dx7 = sx[ 7 ] - ( S6*sx[6] ); - dx8 = sx[ 8 ] - ( S7*sx[7] ); // offset increment for outermost loop - } - // Set a pointer to the first indexed element: - ix = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Cache accessor: - get = x.accessors[ 0 ]; - - // Iterate over the ndarray dimensions... - for ( i8 = 0; i8 < S8; i8++ ) { - for ( i7 = 0; i7 < S7; i7++ ) { - for ( i6 = 0; i6 < S6; i6++ ) { - for ( i5 = 0; i5 < S5; i5++ ) { - for ( i4 = 0; i4 < S4; i4++ ) { - for ( i3 = 0; i3 < S3; i3++ ) { - for ( i2 = 0; i2 < S2; i2++ ) { - for ( i1 = 0; i1 < S1; i1++ ) { - for ( i0 = 0; i0 < S0; i0++ ) { - if ( get( xbuf, ix ) === value ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - ix += dx2; - } - ix += dx3; - } - ix += dx4; - } - ix += dx5; - } - ix += dx6; - } - ix += dx7; - } - ix += dx8; - } - return false; -} - - -// EXPORTS // - -module.exports = includes9d; diff --git a/lib/9d_blocked.js b/lib/9d_blocked.js deleted file mode 100644 index 23fc264..0000000 --- a/lib/9d_blocked.js +++ /dev/null @@ -1,289 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -/* eslint-disable max-depth, max-len */ - -'use strict'; - -// MODULES // - -var loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' ); -var blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' ); - - -// MAIN // - -/** -* Tests whether an ndarray contains a specified value via loop blocking. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {*} value - search element -* @returns {boolean} result -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* // Create a data buffer: -* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 1, 1, 1, 1, 1, 1, 3, 1, 2 ]; -* -* // Define the array strides: -* var sx = [ 12, 12, 12, 12, 12, 12, 4, 4, 1 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'float64', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major' -* }; -* -* // Perform reduction: -* var out = blockedincludes9d( x, 6.0 ); -* // returns true -* -* out = blockedincludes9d( x, 100.0 ); -* // returns false -*/ -function blockedincludes9d( x, value ) { // eslint-disable-line max-statements - var bsize; - var xbuf; - var dx0; - var dx1; - var dx2; - var dx3; - var dx4; - var dx5; - var dx6; - var dx7; - var dx8; - var ox1; - var ox2; - var ox3; - var ox4; - var ox5; - var ox6; - var ox7; - var ox8; - var sh; - var s0; - var s1; - var s2; - var s3; - var s4; - var s5; - var s6; - var s7; - var s8; - var sx; - var ox; - var ix; - var i0; - var i1; - var i2; - var i3; - var i4; - var i5; - var i6; - var i7; - var i8; - var j0; - var j1; - var j2; - var j3; - var j4; - var j5; - var j6; - var j7; - var j8; - var o; - - // Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop... - - // Resolve the loop interchange order: - o = loopOrder( x.shape, x.strides ); - sh = o.sh; - sx = o.sx; - - // Determine the block size: - bsize = blockSize( x.dtype ); - - // Set a pointer to the first indexed element: - ox = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Cache the offset increment for the innermost loop: - dx0 = sx[0]; - - // Iterate over blocks... - for ( j8 = sh[8]; j8 > 0; ) { - if ( j8 < bsize ) { - s8 = j8; - j8 = 0; - } else { - s8 = bsize; - j8 -= bsize; - } - ox8 = ox + ( j8*sx[8] ); - for ( j7 = sh[7]; j7 > 0; ) { - if ( j7 < bsize ) { - s7 = j7; - j7 = 0; - } else { - s7 = bsize; - j7 -= bsize; - } - dx8 = sx[8] - ( s7*sx[7] ); - ox7 = ox8 + ( j7*sx[7] ); - for ( j6 = sh[6]; j6 > 0; ) { - if ( j6 < bsize ) { - s6 = j6; - j6 = 0; - } else { - s6 = bsize; - j6 -= bsize; - } - dx7 = sx[7] - ( s6*sx[6] ); - ox6 = ox7 + ( j6*sx[6] ); - for ( j5 = sh[5]; j5 > 0; ) { - if ( j5 < bsize ) { - s5 = j5; - j5 = 0; - } else { - s5 = bsize; - j5 -= bsize; - } - dx6 = sx[6] - ( s5*sx[5] ); - ox5 = ox6 + ( j5*sx[5] ); - for ( j4 = sh[4]; j4 > 0; ) { - if ( j4 < bsize ) { - s4 = j4; - j4 = 0; - } else { - s4 = bsize; - j4 -= bsize; - } - dx5 = sx[5] - ( s4*sx[4] ); - ox4 = ox5 + ( j4*sx[4] ); - for ( j3 = sh[3]; j3 > 0; ) { - if ( j3 < bsize ) { - s3 = j3; - j3 = 0; - } else { - s3 = bsize; - j3 -= bsize; - } - dx4 = sx[4] - ( s3*sx[3] ); - ox3 = ox4 + ( j3*sx[3] ); - for ( j2 = sh[2]; j2 > 0; ) { - if ( j2 < bsize ) { - s2 = j2; - j2 = 0; - } else { - s2 = bsize; - j2 -= bsize; - } - dx3 = sx[3] - ( s2*sx[2] ); - ox2 = ox3 + ( j2*sx[2] ); - for ( j1 = sh[1]; j1 > 0; ) { - if ( j1 < bsize ) { - s1 = j1; - j1 = 0; - } else { - s1 = bsize; - j1 -= bsize; - } - dx2 = sx[2] - ( s1*sx[1] ); - ox1 = ox2 + ( j1*sx[1] ); - for ( j0 = sh[0]; j0 > 0; ) { - if ( j0 < bsize ) { - s0 = j0; - j0 = 0; - } else { - s0 = bsize; - j0 -= bsize; - } - // Compute the index offset for the first input ndarray element in the current block: - ix = ox1 + ( j0*sx[0] ); - - // Compute the loop offset increment: - dx1 = sx[1] - ( s0*sx[0] ); - - // Iterate over the ndarray dimensions... - for ( i8 = 0; i8 < s8; i8++ ) { - for ( i7 = 0; i7 < s7; i7++ ) { - for ( i6 = 0; i6 < s6; i6++ ) { - for ( i5 = 0; i5 < s5; i5++ ) { - for ( i4 = 0; i4 < s4; i4++ ) { - for ( i3 = 0; i3 < s3; i3++ ) { - for ( i2 = 0; i2 < s2; i2++ ) { - for ( i1 = 0; i1 < s1; i1++ ) { - for ( i0 = 0; i0 < s0; i0++ ) { - if ( xbuf[ ix ] === value ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - ix += dx2; - } - ix += dx3; - } - ix += dx4; - } - ix += dx5; - } - ix += dx6; - } - ix += dx7; - } - ix += dx8; - } - } - } - } - } - } - } - } - } - } - return false; -} - - -// EXPORTS // - -module.exports = blockedincludes9d; diff --git a/lib/9d_blocked_accessors.js b/lib/9d_blocked_accessors.js deleted file mode 100644 index d7f7662..0000000 --- a/lib/9d_blocked_accessors.js +++ /dev/null @@ -1,296 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -/* eslint-disable max-depth, max-len */ - -'use strict'; - -// MODULES // - -var loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' ); -var blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' ); - - -// MAIN // - -/** -* Tests whether an ndarray contains a specified value via loop blocking. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {Array} x.accessors - data buffer accessors -* @param {*} value - search element -* @returns {boolean} result -* -* @example -* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -* var accessors = require( '@stdlib/array-base-accessors' ); -* -* // Create a data buffer: -* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 1, 1, 1, 1, 1, 1, 1, 2, 2 ]; -* -* // Define the array strides: -* var sx = [ 8, 8, 8, 8, 8, 8, 8, 4, 1 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'generic', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major', -* 'accessors': accessors( xbuf ).accessors -* }; -* -* // Perform reduction: -* var out = blockedincludes9d( x, 6.0 ); -* // returns true -* -* out = blockedincludes9d( x, 100.0 ); -* // returns false -*/ -function blockedincludes9d( x, value ) { // eslint-disable-line max-statements - var bsize; - var xbuf; - var get; - var dx0; - var dx1; - var dx2; - var dx3; - var dx4; - var dx5; - var dx6; - var dx7; - var dx8; - var ox1; - var ox2; - var ox3; - var ox4; - var ox5; - var ox6; - var ox7; - var ox8; - var sh; - var s0; - var s1; - var s2; - var s3; - var s4; - var s5; - var s6; - var s7; - var s8; - var sx; - var ox; - var ix; - var i0; - var i1; - var i2; - var i3; - var i4; - var i5; - var i6; - var i7; - var i8; - var j0; - var j1; - var j2; - var j3; - var j4; - var j5; - var j6; - var j7; - var j8; - var o; - - // Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop... - - // Resolve the loop interchange order: - o = loopOrder( x.shape, x.strides ); - sh = o.sh; - sx = o.sx; - - // Determine the block size: - bsize = blockSize( x.dtype ); - - // Set a pointer to the first indexed element: - ox = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Cache the offset increment for the innermost loop: - dx0 = sx[0]; - - // Cache accessor: - get = x.accessors[0]; - - // Iterate over blocks... - for ( j8 = sh[8]; j8 > 0; ) { - if ( j8 < bsize ) { - s8 = j8; - j8 = 0; - } else { - s8 = bsize; - j8 -= bsize; - } - ox8 = ox + ( j8*sx[8] ); - for ( j7 = sh[7]; j7 > 0; ) { - if ( j7 < bsize ) { - s7 = j7; - j7 = 0; - } else { - s7 = bsize; - j7 -= bsize; - } - dx8 = sx[8] - ( s7*sx[7] ); - ox7 = ox8 + ( j7*sx[7] ); - for ( j6 = sh[6]; j6 > 0; ) { - if ( j6 < bsize ) { - s6 = j6; - j6 = 0; - } else { - s6 = bsize; - j6 -= bsize; - } - dx7 = sx[7] - ( s6*sx[6] ); - ox6 = ox7 + ( j6*sx[6] ); - for ( j5 = sh[5]; j5 > 0; ) { - if ( j5 < bsize ) { - s5 = j5; - j5 = 0; - } else { - s5 = bsize; - j5 -= bsize; - } - dx6 = sx[6] - ( s5*sx[5] ); - ox5 = ox6 + ( j5*sx[5] ); - for ( j4 = sh[4]; j4 > 0; ) { - if ( j4 < bsize ) { - s4 = j4; - j4 = 0; - } else { - s4 = bsize; - j4 -= bsize; - } - dx5 = sx[5] - ( s4*sx[4] ); - ox4 = ox5 + ( j4*sx[4] ); - for ( j3 = sh[3]; j3 > 0; ) { - if ( j3 < bsize ) { - s3 = j3; - j3 = 0; - } else { - s3 = bsize; - j3 -= bsize; - } - dx4 = sx[4] - ( s3*sx[3] ); - ox3 = ox4 + ( j3*sx[3] ); - for ( j2 = sh[2]; j2 > 0; ) { - if ( j2 < bsize ) { - s2 = j2; - j2 = 0; - } else { - s2 = bsize; - j2 -= bsize; - } - dx3 = sx[3] - ( s2*sx[2] ); - ox2 = ox3 + ( j2*sx[2] ); - for ( j1 = sh[1]; j1 > 0; ) { - if ( j1 < bsize ) { - s1 = j1; - j1 = 0; - } else { - s1 = bsize; - j1 -= bsize; - } - dx2 = sx[2] - ( s1*sx[1] ); - ox1 = ox2 + ( j1*sx[1] ); - for ( j0 = sh[0]; j0 > 0; ) { - if ( j0 < bsize ) { - s0 = j0; - j0 = 0; - } else { - s0 = bsize; - j0 -= bsize; - } - // Compute the index offset for the first input ndarray element in the current block: - ix = ox1 + ( j0*sx[0] ); - - // Compute the loop offset increment: - dx1 = sx[1] - ( s0*sx[0] ); - - // Iterate over the ndarray dimensions... - for ( i8 = 0; i8 < s8; i8++ ) { - for ( i7 = 0; i7 < s7; i7++ ) { - for ( i6 = 0; i6 < s6; i6++ ) { - for ( i5 = 0; i5 < s5; i5++ ) { - for ( i4 = 0; i4 < s4; i4++ ) { - for ( i3 = 0; i3 < s3; i3++ ) { - for ( i2 = 0; i2 < s2; i2++ ) { - for ( i1 = 0; i1 < s1; i1++ ) { - for ( i0 = 0; i0 < s0; i0++ ) { - if ( get( xbuf, ix ) === value ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - ix += dx2; - } - ix += dx3; - } - ix += dx4; - } - ix += dx5; - } - ix += dx6; - } - ix += dx7; - } - ix += dx8; - } - } - } - } - } - } - } - } - } - } - return false; -} - - -// EXPORTS // - -module.exports = blockedincludes9d; diff --git a/lib/9d_blocked_complex.js b/lib/9d_blocked_complex.js deleted file mode 100644 index a6b16a8..0000000 --- a/lib/9d_blocked_complex.js +++ /dev/null @@ -1,297 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -/* eslint-disable max-depth, max-len */ - -'use strict'; - -// MODULES // - -var loopOrder = require( '@stdlib/ndarray-base-nullary-loop-interchange-order' ); -var blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' ); - - -// MAIN // - -/** -* Tests whether a reinterpreted complex number ndarray contains a specified value via loop blocking. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {ComplexLike} value - search element -* @returns {boolean} result -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* // Create a data buffer: -* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 1, 1, 1, 1, 1, 1, 1, 2, 2 ]; -* -* // Define the array strides: -* var sx = [ 8, 8, 8, 8, 8, 8, 8, 4, 2 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'complex128', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major' -* }; -* -* // Perform reduction: -* var v = { -* 're': 3.0, -* 'im': 4.0 -* }; -* var out = blockedincludes9d( x, v ); -* // returns true -* -* v = { -* 're': -3.0, -* 'im': -4.0 -* }; -* out = blockedincludes9d( x, v ); -* // returns false -*/ -function blockedincludes9d( x, value ) { // eslint-disable-line max-statements - var bsize; - var xbuf; - var dx0; - var dx1; - var dx2; - var dx3; - var dx4; - var dx5; - var dx6; - var dx7; - var dx8; - var ox1; - var ox2; - var ox3; - var ox4; - var ox5; - var ox6; - var ox7; - var ox8; - var sh; - var s0; - var s1; - var s2; - var s3; - var s4; - var s5; - var s6; - var s7; - var s8; - var sx; - var ox; - var ix; - var i0; - var i1; - var i2; - var i3; - var i4; - var i5; - var i6; - var i7; - var i8; - var j0; - var j1; - var j2; - var j3; - var j4; - var j5; - var j6; - var j7; - var j8; - var o; - - // Note on variable naming convention: s#, dx#, dy#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop... - - // Resolve the loop interchange order: - o = loopOrder( x.shape, x.strides ); - sh = o.sh; - sx = o.sx; - - // Determine the block size: - bsize = blockSize( x.dtype ); - - // Set a pointer to the first indexed element: - ox = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Cache the offset increment for the innermost loop: - dx0 = sx[0]; - - // Iterate over blocks... - for ( j8 = sh[8]; j8 > 0; ) { - if ( j8 < bsize ) { - s8 = j8; - j8 = 0; - } else { - s8 = bsize; - j8 -= bsize; - } - ox8 = ox + ( j8*sx[8] ); - for ( j7 = sh[7]; j7 > 0; ) { - if ( j7 < bsize ) { - s7 = j7; - j7 = 0; - } else { - s7 = bsize; - j7 -= bsize; - } - dx8 = sx[8] - ( s7*sx[7] ); - ox7 = ox8 + ( j7*sx[7] ); - for ( j6 = sh[6]; j6 > 0; ) { - if ( j6 < bsize ) { - s6 = j6; - j6 = 0; - } else { - s6 = bsize; - j6 -= bsize; - } - dx7 = sx[7] - ( s6*sx[6] ); - ox6 = ox7 + ( j6*sx[6] ); - for ( j5 = sh[5]; j5 > 0; ) { - if ( j5 < bsize ) { - s5 = j5; - j5 = 0; - } else { - s5 = bsize; - j5 -= bsize; - } - dx6 = sx[6] - ( s5*sx[5] ); - ox5 = ox6 + ( j5*sx[5] ); - for ( j4 = sh[4]; j4 > 0; ) { - if ( j4 < bsize ) { - s4 = j4; - j4 = 0; - } else { - s4 = bsize; - j4 -= bsize; - } - dx5 = sx[5] - ( s4*sx[4] ); - ox4 = ox5 + ( j4*sx[4] ); - for ( j3 = sh[3]; j3 > 0; ) { - if ( j3 < bsize ) { - s3 = j3; - j3 = 0; - } else { - s3 = bsize; - j3 -= bsize; - } - dx4 = sx[4] - ( s3*sx[3] ); - ox3 = ox4 + ( j3*sx[3] ); - for ( j2 = sh[2]; j2 > 0; ) { - if ( j2 < bsize ) { - s2 = j2; - j2 = 0; - } else { - s2 = bsize; - j2 -= bsize; - } - dx3 = sx[3] - ( s2*sx[2] ); - ox2 = ox3 + ( j2*sx[2] ); - for ( j1 = sh[1]; j1 > 0; ) { - if ( j1 < bsize ) { - s1 = j1; - j1 = 0; - } else { - s1 = bsize; - j1 -= bsize; - } - dx2 = sx[2] - ( s1*sx[1] ); - ox1 = ox2 + ( j1*sx[1] ); - for ( j0 = sh[0]; j0 > 0; ) { - if ( j0 < bsize ) { - s0 = j0; - j0 = 0; - } else { - s0 = bsize; - j0 -= bsize; - } - // Compute the index offset for the first input ndarray element in the current block: - ix = ox1 + ( j0*sx[0] ); - - // Compute the loop offset increment: - dx1 = sx[1] - ( s0*sx[0] ); - - // Iterate over the ndarray dimensions... - for ( i8 = 0; i8 < s8; i8++ ) { - for ( i7 = 0; i7 < s7; i7++ ) { - for ( i6 = 0; i6 < s6; i6++ ) { - for ( i5 = 0; i5 < s5; i5++ ) { - for ( i4 = 0; i4 < s4; i4++ ) { - for ( i3 = 0; i3 < s3; i3++ ) { - for ( i2 = 0; i2 < s2; i2++ ) { - for ( i1 = 0; i1 < s1; i1++ ) { - for ( i0 = 0; i0 < s0; i0++ ) { - if ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - ix += dx2; - } - ix += dx3; - } - ix += dx4; - } - ix += dx5; - } - ix += dx6; - } - ix += dx7; - } - ix += dx8; - } - } - } - } - } - } - } - } - } - } - return false; -} - - -// EXPORTS // - -module.exports = blockedincludes9d; diff --git a/lib/9d_complex.js b/lib/9d_complex.js deleted file mode 100644 index 949ee12..0000000 --- a/lib/9d_complex.js +++ /dev/null @@ -1,206 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -/* eslint-disable max-depth, max-len */ - -'use strict'; - -// MODULES // - -var strides2order = require( '@stdlib/ndarray-base-strides2order' ); - - -// MAIN // - -/** -* Tests whether a reinterpreted complex number ndarray contains a specified value. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {ComplexLike} value - search element -* @returns {boolean} result -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* // Create a data buffer: -* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 1, 1, 1, 1, 1, 1, 1, 2, 2 ]; -* -* // Define the array strides: -* var sx = [ 8, 8, 8, 8, 8, 8, 8, 4, 2 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'complex128', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major' -* }; -* -* // Perform reduction: -* var v = { -* 're': 3.0, -* 'im': 4.0 -* }; -* var out = includes9d( x, v ); -* // returns true -* -* v = { -* 're': -3.0, -* 'im': -4.0 -* }; -* out = includes9d( x, v ); -* // returns false -*/ -function includes9d( x, value ) { - var xbuf; - var dx0; - var dx1; - var dx2; - var dx3; - var dx4; - var dx5; - var dx6; - var dx7; - var dx8; - var sh; - var S0; - var S1; - var S2; - var S3; - var S4; - var S5; - var S6; - var S7; - var S8; - var sx; - var ix; - var i0; - var i1; - var i2; - var i3; - var i4; - var i5; - var i6; - var i7; - var i8; - - // Note on variable naming convention: S#, dx#, dy#, i# where # corresponds to the loop number, with `0` being the innermost loop... - - // Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments... - sh = x.shape; - sx = x.strides; - if ( strides2order( sx ) === 1 ) { - // For row-major ndarrays, the last dimensions have the fastest changing indices... - S0 = sh[ 8 ]; - S1 = sh[ 7 ]; - S2 = sh[ 6 ]; - S3 = sh[ 5 ]; - S4 = sh[ 4 ]; - S5 = sh[ 3 ]; - S6 = sh[ 2 ]; - S7 = sh[ 1 ]; - S8 = sh[ 0 ]; - dx0 = sx[ 8 ]; // offset increment for innermost loop - dx1 = sx[ 7 ] - ( S0*sx[8] ); - dx2 = sx[ 6 ] - ( S1*sx[7] ); - dx3 = sx[ 5 ] - ( S2*sx[6] ); - dx4 = sx[ 4 ] - ( S3*sx[5] ); - dx5 = sx[ 3 ] - ( S4*sx[4] ); - dx6 = sx[ 2 ] - ( S5*sx[3] ); - dx7 = sx[ 1 ] - ( S6*sx[2] ); - dx8 = sx[ 0 ] - ( S7*sx[1] ); // offset increment for outermost loop - } else { // order === 'column-major' - // For column-major ndarrays, the first dimensions have the fastest changing indices... - S0 = sh[ 0 ]; - S1 = sh[ 1 ]; - S2 = sh[ 2 ]; - S3 = sh[ 3 ]; - S4 = sh[ 4 ]; - S5 = sh[ 5 ]; - S6 = sh[ 6 ]; - S7 = sh[ 7 ]; - S8 = sh[ 8 ]; - dx0 = sx[ 0 ]; // offset increment for innermost loop - dx1 = sx[ 1 ] - ( S0*sx[0] ); - dx2 = sx[ 2 ] - ( S1*sx[1] ); - dx3 = sx[ 3 ] - ( S2*sx[2] ); - dx4 = sx[ 4 ] - ( S3*sx[3] ); - dx5 = sx[ 5 ] - ( S4*sx[4] ); - dx6 = sx[ 6 ] - ( S5*sx[5] ); - dx7 = sx[ 7 ] - ( S6*sx[6] ); - dx8 = sx[ 8 ] - ( S7*sx[7] ); // offset increment for outermost loop - } - // Set a pointer to the first indexed element: - ix = x.offset; - - // Cache a reference to the input ndarray buffer: - xbuf = x.data; - - // Iterate over the ndarray dimensions... - for ( i8 = 0; i8 < S8; i8++ ) { - for ( i7 = 0; i7 < S7; i7++ ) { - for ( i6 = 0; i6 < S6; i6++ ) { - for ( i5 = 0; i5 < S5; i5++ ) { - for ( i4 = 0; i4 < S4; i4++ ) { - for ( i3 = 0; i3 < S3; i3++ ) { - for ( i2 = 0; i2 < S2; i2++ ) { - for ( i1 = 0; i1 < S1; i1++ ) { - for ( i0 = 0; i0 < S0; i0++ ) { - if ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) { - return true; - } - ix += dx0; - } - ix += dx1; - } - ix += dx2; - } - ix += dx3; - } - ix += dx4; - } - ix += dx5; - } - ix += dx6; - } - ix += dx7; - } - ix += dx8; - } - return false; -} - - -// EXPORTS // - -module.exports = includes9d; diff --git a/lib/index.js b/lib/index.js deleted file mode 100644 index 3a55e82..0000000 --- a/lib/index.js +++ /dev/null @@ -1,74 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -/** -* Test whether an ndarray contains a specified value. -* -* @module @stdlib/ndarray-base-includes -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* var includes = require( '@stdlib/ndarray-base-includes' ); -* -* // Create a data buffer: -* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 3, 1, 2 ]; -* -* // Define the array strides: -* var sx = [ 4, 4, 1 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'float64', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major' -* }; -* -* // Create the search element ndarray-like object: -* var searchElement = { -* 'dtype': 'float64', -* 'data': new Float64Array( [ 2.0 ] ), -* 'shape': [], -* 'strides': [ 0 ], -* 'offset': 0, -* 'order': 'row-major' -* }; -* -* // Perform reduction: -* var out = includes( [ x, searchElement ] ); -* // returns true -*/ - -// MODULES // - -var main = require( './main.js' ); - - -// EXPORTS // - -module.exports = main; diff --git a/lib/main.js b/lib/main.js deleted file mode 100644 index 20a078c..0000000 --- a/lib/main.js +++ /dev/null @@ -1,407 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var isComplexArray = require( '@stdlib/array-base-assert-is-complex-typed-array' ); -var isBooleanArray = require( '@stdlib/array-base-assert-is-booleanarray' ); -var isBoolean = require( '@stdlib/assert-is-boolean' ).isPrimitive; -var isComplexLike = require( '@stdlib/assert-is-complex-like' ); -var iterationOrder = require( '@stdlib/ndarray-base-iteration-order' ); -var minmaxViewBufferIndex = require( '@stdlib/ndarray-base-minmax-view-buffer-index' ); -var ndarray2object = require( '@stdlib/ndarray-base-ndarraylike2object' ); -var reinterpretComplex = require( '@stdlib/strided-base-reinterpret-complex' ); -var reinterpretBoolean = require( '@stdlib/strided-base-reinterpret-boolean' ); -var real = require( '@stdlib/complex-float64-real' ); -var imag = require( '@stdlib/complex-float64-imag' ); -var gscal = require( '@stdlib/blas-base-gscal' ); -var blockedaccessorincludes2d = require( './2d_blocked_accessors.js' ); -var blockedaccessorincludes3d = require( './3d_blocked_accessors.js' ); -var blockedaccessorincludes4d = require( './4d_blocked_accessors.js' ); -var blockedaccessorincludes5d = require( './5d_blocked_accessors.js' ); -var blockedaccessorincludes6d = require( './6d_blocked_accessors.js' ); -var blockedaccessorincludes7d = require( './7d_blocked_accessors.js' ); -var blockedaccessorincludes8d = require( './8d_blocked_accessors.js' ); -var blockedaccessorincludes9d = require( './9d_blocked_accessors.js' ); -var blockedaccessorincludes10d = require( './10d_blocked_accessors.js' ); // eslint-disable-line id-length -var blockedcomplexincludes2d = require( './2d_blocked_complex.js' ); -var blockedcomplexincludes3d = require( './3d_blocked_complex.js' ); -var blockedcomplexincludes4d = require( './4d_blocked_complex.js' ); -var blockedcomplexincludes5d = require( './5d_blocked_complex.js' ); -var blockedcomplexincludes6d = require( './6d_blocked_complex.js' ); -var blockedcomplexincludes7d = require( './7d_blocked_complex.js' ); -var blockedcomplexincludes8d = require( './8d_blocked_complex.js' ); -var blockedcomplexincludes9d = require( './9d_blocked_complex.js' ); -var blockedcomplexincludes10d = require( './10d_blocked_complex.js' ); -var blockedincludes2d = require( './2d_blocked.js' ); -var blockedincludes3d = require( './3d_blocked.js' ); -var blockedincludes4d = require( './4d_blocked.js' ); -var blockedincludes5d = require( './5d_blocked.js' ); -var blockedincludes6d = require( './6d_blocked.js' ); -var blockedincludes7d = require( './7d_blocked.js' ); -var blockedincludes8d = require( './8d_blocked.js' ); -var blockedincludes9d = require( './9d_blocked.js' ); -var blockedincludes10d = require( './10d_blocked.js' ); -var accessorincludes0d = require( './0d_accessors.js' ); -var accessorincludes1d = require( './1d_accessors.js' ); -var accessorincludes2d = require( './2d_accessors.js' ); -var accessorincludes3d = require( './3d_accessors.js' ); -var accessorincludes4d = require( './4d_accessors.js' ); -var accessorincludes5d = require( './5d_accessors.js' ); -var accessorincludes6d = require( './6d_accessors.js' ); -var accessorincludes7d = require( './7d_accessors.js' ); -var accessorincludes8d = require( './8d_accessors.js' ); -var accessorincludes9d = require( './9d_accessors.js' ); -var accessorincludes10d = require( './10d_accessors.js' ); -var accessorincludesnd = require( './nd_accessors.js' ); -var complexincludes0d = require( './0d_complex.js' ); -var complexincludes1d = require( './1d_complex.js' ); -var complexincludes2d = require( './2d_complex.js' ); -var complexincludes3d = require( './3d_complex.js' ); -var complexincludes4d = require( './4d_complex.js' ); -var complexincludes5d = require( './5d_complex.js' ); -var complexincludes6d = require( './6d_complex.js' ); -var complexincludes7d = require( './7d_complex.js' ); -var complexincludes8d = require( './8d_complex.js' ); -var complexincludes9d = require( './9d_complex.js' ); -var complexincludes10d = require( './10d_complex.js' ); -var complexincludesnd = require( './nd_complex.js' ); -var includes0d = require( './0d.js' ); -var includes1d = require( './1d.js' ); -var includes2d = require( './2d.js' ); -var includes3d = require( './3d.js' ); -var includes4d = require( './4d.js' ); -var includes5d = require( './5d.js' ); -var includes6d = require( './6d.js' ); -var includes7d = require( './7d.js' ); -var includes8d = require( './8d.js' ); -var includes9d = require( './9d.js' ); -var includes10d = require( './10d.js' ); -var includesnd = require( './nd.js' ); - - -// VARIABLES // - -var INCLUDES = [ - includes0d, - includes1d, - includes2d, - includes3d, - includes4d, - includes5d, - includes6d, - includes7d, - includes8d, - includes9d, - includes10d -]; -var ACCESSOR_INCLUDES = [ - accessorincludes0d, - accessorincludes1d, - accessorincludes2d, - accessorincludes3d, - accessorincludes4d, - accessorincludes5d, - accessorincludes6d, - accessorincludes7d, - accessorincludes8d, - accessorincludes9d, - accessorincludes10d -]; -var COMPLEX_INCLUDES = [ - complexincludes0d, - complexincludes1d, - complexincludes2d, - complexincludes3d, - complexincludes4d, - complexincludes5d, - complexincludes6d, - complexincludes7d, - complexincludes8d, - complexincludes9d, - complexincludes10d -]; -var BLOCKED_INCLUDES = [ - blockedincludes2d, // 0 - blockedincludes3d, - blockedincludes4d, - blockedincludes5d, - blockedincludes6d, - blockedincludes7d, - blockedincludes8d, - blockedincludes9d, - blockedincludes10d // 8 -]; -var BLOCKED_ACCESSOR_INCLUDES = [ - blockedaccessorincludes2d, // 0 - blockedaccessorincludes3d, - blockedaccessorincludes4d, - blockedaccessorincludes5d, - blockedaccessorincludes6d, - blockedaccessorincludes7d, - blockedaccessorincludes8d, - blockedaccessorincludes9d, - blockedaccessorincludes10d // 8 -]; -var BLOCKED_COMPLEX_INCLUDES = [ - blockedcomplexincludes2d, // 0 - blockedcomplexincludes3d, - blockedcomplexincludes4d, - blockedcomplexincludes5d, - blockedcomplexincludes6d, - blockedcomplexincludes7d, - blockedcomplexincludes8d, - blockedcomplexincludes9d, - blockedcomplexincludes10d // 8 -]; -var MAX_DIMS = INCLUDES.length - 1; - - -// MAIN // - -/** -* Tests whether an ndarray contains a specified value. -* -* ## Notes -* -* - A provided ndarray should be an object with the following properties: -* -* - **dtype**: data type. -* - **data**: data buffer. -* - **shape**: dimensions. -* - **strides**: stride lengths. -* - **offset**: index offset. -* - **order**: specifies whether an ndarray is row-major (C-style) or column major (Fortran-style). -* -* @param {ArrayLikeObject} arrays - array-like object containing one input array and a zero-dimensional search element array -* @returns {boolean} result -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* // Create a data buffer: -* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 3, 1, 2 ]; -* -* // Define the array strides: -* var sx = [ 4, 4, 1 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'float64', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major' -* }; -* -* // Create the search element ndarray-like object: -* var searchElement = { -* 'dtype': 'float64', -* 'data': new Float64Array( [ 2.0 ] ), -* 'shape': [], -* 'strides': [ 0 ], -* 'offset': 0, -* 'order': 'row-major' -* }; -* -* // Perform reduction: -* var out = includes( [ x, searchElement ] ); -* // returns true -*/ -function includes( arrays ) { - var isCmplx; - var value; - var ndims; - var xmmv; - var shx; - var iox; - var len; - var sx; - var ox; - var ns; - var x; - var d; - var i; - - // Unpack the ndarrays and standardize ndarray meta data: - x = ndarray2object( arrays[ 0 ] ); - value = ndarray2object( arrays[ 1 ] ); - - shx = x.shape; - ndims = shx.length; - - // Resolve the search element as a scalar: - value = value.accessors[ 0 ]( value.data, value.offset ); - - // Check for known array types which can be reinterpreted for better iteration performance... - if ( isBooleanArray( x.data ) ) { - if ( !isBoolean( value ) ) { - return false; - } - x.data = reinterpretBoolean( x.data, 0 ); - x.accessorProtocol = false; - } else if ( isComplexArray( x.data ) ) { - if ( !isComplexLike( value ) ) { - return false; - } - // TODO: consider adding something like `complex/base/complex2object` where we normalize a user-provided complex-like object to a standardized object shape - value = { - 're': real( value ), - 'im': imag( value ) - }; - x.data = reinterpretComplex( x.data, 0 ); - x.accessorProtocol = false; - x.strides = gscal( ndims, 2, x.strides, 1 ); - x.offset *= 2; - isCmplx = true; - } - // Determine whether we can avoid iteration altogether... - if ( ndims === 0 ) { - if ( x.accessorProtocol ) { - return ACCESSOR_INCLUDES[ ndims ]( x, value ); - } - if ( isCmplx ) { - return COMPLEX_INCLUDES[ ndims ]( x, value ); - } - return INCLUDES[ ndims ]( x, value ); - } - // Compute the number of elements and the number of singleton dimensions... - len = 1; // number of elements - ns = 0; // number of singleton dimensions - for ( i = 0; i < ndims; i++ ) { - d = shx[ i ]; - - // Note that, if one of the dimensions is `0`, the length will be `0`... - len *= d; - - // Check whether the current dimension is a singleton dimension... - if ( d === 1 ) { - ns += 1; - } - } - // Check whether we were provided an empty ndarray... - if ( len === 0 ) { - // An empty array is a trivial case in which an array does not contain a search element: - return false; - } - // Determine whether the ndarray is one-dimensional and thus readily translates to a one-dimensional strided array... - if ( ndims === 1 ) { - if ( x.accessorProtocol ) { - return ACCESSOR_INCLUDES[ ndims ]( x, value ); - } - if ( isCmplx ) { - return COMPLEX_INCLUDES[ ndims ]( x, value ); - } - return INCLUDES[ ndims ]( x, value ); - } - sx = x.strides; - - // Determine whether the ndarray has only **one** non-singleton dimension (e.g., ndims=4, shape=[10,1,1,1]) so that we can treat an ndarray as being equivalent to a one-dimensional strided array... - if ( ns === ndims-1 ) { - // Get the index of the non-singleton dimension... - for ( i = 0; i < ndims; i++ ) { - if ( shx[ i ] !== 1 ) { - break; - } - } - x.shape = [ shx[i] ]; - x.strides = [ sx[i] ]; - if ( x.accessorProtocol ) { - return ACCESSOR_INCLUDES[ 1 ]( x, value ); - } - if ( isCmplx ) { - return COMPLEX_INCLUDES[ 1 ]( x, value ); - } - return INCLUDES[ 1 ]( x, value ); - } - iox = iterationOrder( sx ); // +/-1 - - // Determine whether we can avoid blocked iteration... - if ( iox !== 0 ) { - // Determine the minimum and maximum linear indices which are accessible by the array view: - xmmv = minmaxViewBufferIndex( shx, sx, x.offset ); - - // Determine whether we can ignore shape (and strides) and treat the ndarray as a linear one-dimensional strided array... - if ( len === ( xmmv[1]-xmmv[0]+1 ) || ( isCmplx && len*2 === ( xmmv[1]-xmmv[0]+2 ) ) ) { // eslint-disable-line max-len - // Note: the above is equivalent to @stdlib/ndarray/base/assert/is-contiguous, but in-lined so we can retain computed values... - if ( iox === 1 ) { - ox = xmmv[ 0 ]; - } else { - ox = xmmv[ 1 ]; - } - x.shape = [ len ]; - x.strides = [ ( isCmplx ) ? iox*2 : iox ]; - x.offset = ox; - if ( x.accessorProtocol ) { - return ACCESSOR_INCLUDES[ 1 ]( x, value ); - } - if ( isCmplx ) { - return COMPLEX_INCLUDES[ 1 ]( x, value ); - } - return INCLUDES[ 1 ]( x, value ); - } - // The ndarray is non-contiguous, so we cannot directly use one-dimensional array functionality... - - // Determine whether we can use simple nested loops... - if ( ndims <= MAX_DIMS ) { - // So long as iteration always moves in the same direction (i.e., no mixed sign strides), we can leverage cache-optimal (i.e., normal) nested loops without resorting to blocked iteration... - if ( x.accessorProtocol ) { - return ACCESSOR_INCLUDES[ ndims ]( x, value ); - } - if ( isCmplx ) { - return COMPLEX_INCLUDES[ ndims ]( x, value ); - } - return INCLUDES[ ndims ]( x, value ); - } - // Fall-through to blocked iteration... - } - // At this point, we're either dealing with a non-contiguous n-dimensional array or a high dimensional n-dimensional array, so our only hope is that we can still perform blocked iteration... - - // Determine whether we can perform blocked iteration... - if ( ndims <= MAX_DIMS ) { - if ( x.accessorProtocol ) { - return BLOCKED_ACCESSOR_INCLUDES[ ndims-2 ]( x, value ); - } - if ( isCmplx ) { - return BLOCKED_COMPLEX_INCLUDES[ ndims-2 ]( x, value ); - } - return BLOCKED_INCLUDES[ ndims-2 ]( x, value ); - } - // Fall-through to linear view iteration without regard for how data is stored in memory (i.e., take the slow path)... - if ( x.accessorProtocol ) { - return accessorincludesnd( x, value ); - } - if ( isCmplx ) { - return complexincludesnd( x, value ); - } - return includesnd( x, value ); -} - - -// EXPORTS // - -module.exports = includes; diff --git a/lib/nd.js b/lib/nd.js deleted file mode 100644 index 0f6ed8e..0000000 --- a/lib/nd.js +++ /dev/null @@ -1,120 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var numel = require( '@stdlib/ndarray-base-numel' ); -var vind2bind = require( '@stdlib/ndarray-base-vind2bind' ); - - -// VARIABLES // - -var MODE = 'throw'; - - -// MAIN // - -/** -* Tests whether an ndarray contains a specified value. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {*} value - search element -* @returns {boolean} result -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* // Create a data buffer: -* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 2, 2 ]; -* -* // Define the array strides: -* var sx = [ 4, 1 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'float64', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major' -* }; -* -* // Perform reduction: -* var out = includesnd( x, 6.0 ); -* // returns true -* -* out = includesnd( x, 100.0 ); -* // returns false -*/ -function includesnd( x, value ) { - var xbuf; - var ordx; - var len; - var sh; - var sx; - var ox; - var ix; - var i; - - sh = x.shape; - - // Compute the total number of elements over which to iterate: - len = numel( sh ); - - // Cache a reference to the output ndarray data buffer: - xbuf = x.data; - - // Cache a reference to the stride array: - sx = x.strides; - - // Cache the index of the first indexed element: - ox = x.offset; - - // Cache the array order: - ordx = x.order; - - // Iterate over each element based on the linear **view** index, regardless as to how the data is stored in memory... - for ( i = 0; i < len; i++ ) { - ix = vind2bind( sh, sx, ox, ordx, i, MODE ); - if ( xbuf[ ix ] === value ) { - return true; - } - } - return false; -} - - -// EXPORTS // - -module.exports = includesnd; diff --git a/lib/nd_accessors.js b/lib/nd_accessors.js deleted file mode 100644 index 45bf60c..0000000 --- a/lib/nd_accessors.js +++ /dev/null @@ -1,127 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var numel = require( '@stdlib/ndarray-base-numel' ); -var vind2bind = require( '@stdlib/ndarray-base-vind2bind' ); - - -// VARIABLES // - -var MODE = 'throw'; - - -// MAIN // - -/** -* Tests whether an ndarray contains a specified value. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {Array} x.accessors - data buffer accessors -* @param {*} value - search element -* @returns {boolean} result -* -* @example -* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -* var accessors = require( '@stdlib/array-base-accessors' ); -* -* // Create a data buffer: -* var xbuf = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 2, 2 ]; -* -* // Define the array strides: -* var sx = [ 4, 1 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'generic', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major', -* 'accessors': accessors( xbuf ).accessors -* }; -* -* // Perform reduction: -* var out = includesnd( x, 6.0 ); -* // returns true -* -* out = includesnd( x, 100.0 ); -* // returns false -*/ -function includesnd( x, value ) { - var xbuf; - var ordx; - var len; - var get; - var sh; - var sx; - var ox; - var ix; - var i; - - sh = x.shape; - - // Compute the total number of elements over which to iterate: - len = numel( sh ); - - // Cache a reference to the output ndarray data buffer: - xbuf = x.data; - - // Cache a reference to the stride array: - sx = x.strides; - - // Cache the index of the first indexed element: - ox = x.offset; - - // Cache the array order: - ordx = x.order; - - // Cache accessor: - get = x.accessors[ 0 ]; - - // Iterate over each element based on the linear **view** index, regardless as to how the data is stored in memory... - for ( i = 0; i < len; i++ ) { - ix = vind2bind( sh, sx, ox, ordx, i, MODE ); - if ( get( xbuf, ix ) === value ) { - return true; - } - } - return false; -} - - -// EXPORTS // - -module.exports = includesnd; diff --git a/lib/nd_complex.js b/lib/nd_complex.js deleted file mode 100644 index a260780..0000000 --- a/lib/nd_complex.js +++ /dev/null @@ -1,128 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var numel = require( '@stdlib/ndarray-base-numel' ); -var vind2bind = require( '@stdlib/ndarray-base-vind2bind' ); - - -// VARIABLES // - -var MODE = 'throw'; - - -// MAIN // - -/** -* Tests whether a reinterpreted complex number ndarray contains a specified value. -* -* @private -* @param {Object} x - object containing ndarray meta data -* @param {*} x.dtype - data type -* @param {Collection} x.data - data buffer -* @param {NonNegativeIntegerArray} x.shape - dimensions -* @param {IntegerArray} x.strides - stride lengths -* @param {NonNegativeInteger} x.offset - index offset -* @param {string} x.order - specifies whether `x` is row-major (C-style) or column-major (Fortran-style) -* @param {ComplexLike} value - search element -* @returns {boolean} result -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* // Create a data buffer: -* var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); -* -* // Define the shape of the input array: -* var shape = [ 2, 2 ]; -* -* // Define the array strides: -* var sx = [ 4, 2 ]; -* -* // Define the index offset: -* var ox = 0; -* -* // Create the input ndarray-like object: -* var x = { -* 'dtype': 'complex128', -* 'data': xbuf, -* 'shape': shape, -* 'strides': sx, -* 'offset': ox, -* 'order': 'row-major' -* }; -* -* // Perform reduction: -* var v = { -* 're': 3.0, -* 'im': 4.0 -* }; -* var out = includesnd( x, v ); -* // returns true -* -* v = { -* 're': -3.0, -* 'im': -4.0 -* }; -* out = includesnd( x, v ); -* // returns false -*/ -function includesnd( x, value ) { - var xbuf; - var ordx; - var len; - var sh; - var sx; - var ox; - var ix; - var i; - - sh = x.shape; - - // Compute the total number of elements over which to iterate: - len = numel( sh ); - - // Cache a reference to the output ndarray data buffer: - xbuf = x.data; - - // Cache a reference to the stride array: - sx = x.strides; - - // Cache the index of the first indexed element: - ox = x.offset; - - // Cache the array order: - ordx = x.order; - - // Iterate over each element based on the linear **view** index, regardless as to how the data is stored in memory... - for ( i = 0; i < len; i++ ) { - ix = vind2bind( sh, sx, ox, ordx, i, MODE ); - if ( xbuf[ ix ] === value.re && xbuf[ ix+1 ] === value.im ) { - return true; - } - } - return false; -} - - -// EXPORTS // - -module.exports = includesnd; diff --git a/package.json b/package.json index b06a96b..a3c5788 100644 --- a/package.json +++ b/package.json @@ -3,31 +3,8 @@ "version": "0.1.1", "description": "Test whether an ndarray contains a specified value.", "license": "Apache-2.0", - "author": { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - }, - "contributors": [ - { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - } - ], - "main": "./lib", - "directories": { - "benchmark": "./benchmark", - "doc": "./docs", - "example": "./examples", - "lib": "./lib", - "test": "./test" - }, - "types": "./docs/types", - "scripts": { - "test": "make test", - "test-cov": "make test-cov", - "examples": "make examples", - "benchmark": "make benchmark" - }, + "type": "module", + "main": "./index.mjs", "homepage": "https://stdlib.io", "repository": { "type": "git", @@ -36,64 +13,6 @@ "bugs": { "url": "https://github.com/stdlib-js/stdlib/issues" }, - "dependencies": { - "@stdlib/array-base-assert-is-booleanarray": "^0.0.3", - "@stdlib/array-base-assert-is-complex-typed-array": "^0.1.3", - "@stdlib/assert-is-boolean": "^0.2.3", - "@stdlib/assert-is-complex-like": "^0.2.4", - "@stdlib/blas-base-gscal": "^0.3.1", - "@stdlib/complex-float64-imag": "^0.1.2", - "@stdlib/complex-float64-real": "^0.1.2", - "@stdlib/ndarray-base-iteration-order": "^0.2.3", - "@stdlib/ndarray-base-minmax-view-buffer-index": "^0.2.3", - "@stdlib/ndarray-base-ndarraylike2object": "^0.2.3", - "@stdlib/ndarray-base-nullary-loop-interchange-order": "^0.2.3", - "@stdlib/ndarray-base-nullary-tiling-block-size": "^0.2.3", - "@stdlib/ndarray-base-numel": "^0.2.3", - "@stdlib/ndarray-base-strides2order": "^0.2.3", - "@stdlib/ndarray-base-vind2bind": "^0.2.3", - "@stdlib/strided-base-reinterpret-boolean": "^0.0.3", - "@stdlib/strided-base-reinterpret-complex": "^0.1.3", - "@stdlib/types": "^0.5.1" - }, - "devDependencies": { - "@stdlib/array-base-to-accessor-array": "^0.2.3", - "@stdlib/array-complex128": "^0.3.2", - "@stdlib/array-float64": "^0.2.3", - "@stdlib/array-one-to": "^0.2.3", - "@stdlib/array-typed-complex-ctors": "^0.2.3", - "@stdlib/complex-float64-ctor": "^0.1.2", - "@stdlib/math-base-special-cbrt": "^0.2.3", - "@stdlib/math-base-special-floor": "^0.2.4", - "@stdlib/math-base-special-pow": "^0.3.1", - "@stdlib/math-base-special-sqrt": "^0.2.3", - "@stdlib/ndarray-base-shape2strides": "^0.2.3", - "@stdlib/ndarray-base-strides2offset": "^0.2.3", - "@stdlib/ndarray-base-to-array": "^0.2.2", - "@stdlib/ndarray-ctor": "^0.3.1", - "@stdlib/ndarray-from-scalar": "^0.3.1", - "@stdlib/random-array-discrete-uniform": "^0.2.2", - "@stdlib/string-format": "^0.2.3", - "tape": "git+https://github.com/kgryte/tape.git#fix/globby", - "istanbul": "^0.4.1", - "tap-min": "git+https://github.com/Planeshifter/tap-min.git", - "@stdlib/bench-harness": "^0.2.3" - }, - "engines": { - "node": ">=0.10.0", - "npm": ">2.7.0" - }, - "os": [ - "aix", - "darwin", - "freebsd", - "linux", - "macos", - "openbsd", - "sunos", - "win32", - "windows" - ], "keywords": [ "stdlib", "base", diff --git a/stats.html b/stats.html new file mode 100644 index 0000000..c56bb54 --- /dev/null +++ b/stats.html @@ -0,0 +1,4842 @@ + + + + + + + + Rollup Visualizer + + + +
+ + + + + diff --git a/test/dist/test.js b/test/dist/test.js deleted file mode 100644 index a8a9c60..0000000 --- a/test/dist/test.js +++ /dev/null @@ -1,33 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2023 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var main = require( './../../dist' ); - - -// TESTS // - -tape( 'main export is defined', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( main !== void 0, true, 'main export is defined' ); - t.end(); -}); diff --git a/test/test.0d.js b/test/test.0d.js deleted file mode 100644 index f908043..0000000 --- a/test/test.0d.js +++ /dev/null @@ -1,114 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var Float64Array = require( '@stdlib/array-float64' ); -var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var scalar2ndarray = require( '@stdlib/ndarray-from-scalar' ); -var ndarray = require( '@stdlib/ndarray-ctor' ); -var includes = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof includes, 'function', 'main export is a function'); - t.end(); -}); - -tape( 'the function tests whether a 0-dimensional ndarray contains a specified value', function test( t ) { - var actual; - var x; - var v; - - x = scalar2ndarray( 0.0, { - 'dtype': 'float64' - }); - v = scalar2ndarray( 1.0, { - 'dtype': 'float64' - }); - - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - x = scalar2ndarray( 1.0, { - 'dtype': 'float64' - }); - v = scalar2ndarray( 1.0, { - 'dtype': 'float64' - }); - - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 0-dimensional ndarray contains a specified value (accessors)', function test( t ) { - var actual; - var x; - var v; - - x = ndarray( 'float64', toAccessorArray( new Float64Array( [ 0.0 ] ) ), [], [ 0 ], 0, 'row-major' ); - v = ndarray( 'float64', toAccessorArray( new Float64Array( [ 1.0 ] ) ), [], [ 0 ], 0, 'row-major' ); - - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - x = ndarray( 'float64', toAccessorArray( new Float64Array( [ 1.0 ] ) ), [], [ 0 ], 0, 'row-major' ); - v = ndarray( 'float64', toAccessorArray( new Float64Array( [ 1.0 ] ) ), [], [ 0 ], 0, 'row-major' ); - - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 0-dimensional ndarray contains a specified value (complex)', function test( t ) { - var actual; - var x; - var v; - - x = scalar2ndarray( new Complex128( 0.0, 0.0 ), { - 'dtype': 'complex128' - }); - v = scalar2ndarray( new Complex128( 1.0, 2.0 ), { - 'dtype': 'complex128' - }); - - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - x = scalar2ndarray( new Complex128( 1.0, 2.0 ), { - 'dtype': 'complex128' - }); - v = scalar2ndarray( new Complex128( 1.0, 2.0 ), { - 'dtype': 'complex128' - }); - - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); diff --git a/test/test.10d.js b/test/test.10d.js deleted file mode 100644 index c35d864..0000000 --- a/test/test.10d.js +++ /dev/null @@ -1,3436 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var oneTo = require( '@stdlib/array-one-to' ); -var scalar2ndarray = require( '@stdlib/ndarray-from-scalar' ); -var numel = require( '@stdlib/ndarray-base-numel' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var strides2offset = require( '@stdlib/ndarray-base-strides2offset' ); -var ndarray = require( '@stdlib/ndarray-ctor' ); -var blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' ); -var includes = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof includes, 'function', 'main export is a function'); - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (row-major, singleton dimensions)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 4, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (row-major, singleton dimensions, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 4, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (row-major, contiguous)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 1, 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (row-major, contiguous, negative strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 1, 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ -8, -8, -8, -8, -4, -4, -2, -2, -1, -1 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (row-major, non-contiguous, same sign strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 1, 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 8, 8, 8, 8, 8, 8, 4, 4, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (row-major, non-contiguous, mixed sign strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 1, 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 8, 8, 8, 8, 8, 8, 4, 4, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 1, 1, 2, 1, 2, 1, 1, 1, 1 ]; - st = [ -8, -8, -8, 4, 4, 2, 2, 2, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, bsize*2, 1, 2, 1, 2, 1, 1, 1, 1 ]; - st = [ -bsize*16, -8, -8, 4, 4, 2, 2, 2, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, bsize*2, 1, 1, 2, 1, 1, 1, 1 ]; - st = [ bsize*16, bsize*8, 4, -4, -4, -2, -2, -2, -2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, bsize*2, 1, 2, 1, 1, 1, 1 ]; - st = [ bsize*16, bsize*8, bsize*8, -4, -4, 2, 2, 2, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, bsize*2, 1, 1, 1, 1, 1 ]; - st = [ bsize*8, bsize*8, bsize*4, -bsize*4, -2, 2, 2, 2, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, 1, bsize*2, 1, 1, 1, 1 ]; - st = [ bsize*8, bsize*8, bsize*4, -bsize*4, -bsize*4, 2, 2, 2, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, 1, 1, bsize*2, 1, 1, 1 ]; - st = [ bsize*8, bsize*8, bsize*4, -bsize*4, -bsize*4, bsize*4, 2, 2, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, 1, 1, 1, bsize*2, 1, 1 ]; - st = [ - bsize*8, - bsize*8, - bsize*4, - -bsize*4, - -bsize*4, - bsize*4, - bsize*4, - 2, - 2, - 2 - ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, 1, 1, 1, 1, bsize*2, 1 ]; - st = [ - bsize*8, - bsize*8, - bsize*4, - -bsize*4, - -bsize*4, - bsize*4, - bsize*4, - bsize*4, - 2, - 2 - ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, 1, 1, 1, 1, 1, bsize*2 ]; - st = [ - bsize*8, - bsize*8, - bsize*4, - -bsize*4, - -bsize*4, - bsize*4, - bsize*4, - bsize*4, - bsize*4, - 2 - ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (row-major, contiguous, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - sh = [ 1, 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( -99.0, -99.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (row-major, contiguous, negative strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - sh = [ 1, 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ -4, -4, -4, -4, -4, -4, -2, -2, -1, -1 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( -99.0, -99.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (row-major, non-contiguous, same sign strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - sh = [ 1, 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 8, 8, 8, 8, 8, 8, 4, 4, 2, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( 64, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (row-major, non-contiguous, mixed sign strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - sh = [ 1, 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 8, 8, 8, 8, 8, -8, -4, 4, 2, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( 64, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 1, 2, 1, 2, 1, 1, 1, 1, 1 ]; - st = [ -8, -8, 4, 4, 2, 2, 2, 2, 2, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, bsize*2, 2, 1, 2, 1, 1, 1, 1, 1 ]; - st = [ -bsize*16, -8, 4, 4, 2, 2, 2, 2, 2, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, bsize*2, 1, 2, 1, 1, 1, 1, 1 ]; - st = [ -bsize*16, -bsize*8, -4, 4, 2, 2, 2, 2, 2, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, bsize*2, 1, 1, 1, 1, 1, 1 ]; - st = [ -bsize*8, -bsize*8, bsize*4, 2, 2, 2, 2, 2, 2, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, 2, bsize*2, 1, 1, 1, 1, 1 ]; - st = [ -bsize*16, -bsize*8, bsize*4, 2, 2, 2, 2, 2, 2, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, 2, 1, bsize*2, 1, 1, 1, 1 ]; - st = [ -bsize*16, -bsize*8, -bsize*8, bsize*4, bsize*4, 2, 2, 2, 2, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, 2, 1, 1, bsize*2, 2, 1, 1 ]; - st = [ -bsize*16, -bsize*8, -bsize*8, bsize*4, bsize*4, bsize*4, 2, 2, 2, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, 2, 1, 1, 1, bsize*2, 1, 1 ]; - st = [ - -bsize*16, - -bsize*8, - -bsize*8, - bsize*4, - bsize*4, - bsize*4, - bsize*4, - 2, - 2, - 2 - ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, 2, 1, 1, 1, 1, bsize*2, 1 ]; - st = [ - -bsize*16, - -bsize*8, - -bsize*8, - bsize*4, - bsize*4, - bsize*4, - bsize*4, - bsize*4, - 2, - 2 - ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, 2, 1, 1, 1, 1, 1, bsize*2 ]; - st = [ - -bsize*16, - -bsize*8, - -bsize*8, - bsize*4, - bsize*4, - bsize*4, - bsize*4, - bsize*4, - bsize*4, - 2 - ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (row-major, contiguous, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 1, 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (row-major, contiguous, negative strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 1, 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ -8, -8, -8, -8, -4, -4, -2, -2, -1, -1 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (row-major, non-contiguous, same sign strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 1, 1, 1, 2, 1, 2, 1, 2, 1, 1 ]; - st = [ 16, 16, 16, 8, 8, 4, 4, 2, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (row-major, non-contiguous, mixed sign strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 1, 1, 1, 2, 1, 2, 1, 2, 1, 1 ]; - st = [ 16, 16, 16, 8, -8, -4, 4, 2, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 1, 2, 1, 2, 1, 1, 1, 1, 1 ]; - st = [ -8, -8, 4, 4, 2, 2, 2, 2, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, bsize*2, 2, 1, 2, 1, 1, 1, 1, 1 ]; - st = [ -bsize*16, -8, 4, 4, 2, 2, 2, 2, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, bsize*2, 1, 2, 1, 1, 1, 1, 1 ]; - st = [ bsize*8, bsize*8, -4, 4, 2, 2, 2, 2, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, bsize*2, 2, 1, 1, 1, 1, 1 ]; - st = [ bsize*16, bsize*8, -bsize*8, 4, 2, 2, 2, 2, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, 2, bsize*2, 1, 1, 1, 1, 1 ]; - st = [ bsize*16, bsize*8, bsize*8, bsize*4, 2, 2, 2, 2, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, 2, 1, bsize*2, 1, 1, 1, 1 ]; - st = [ bsize*16, bsize*8, bsize*8, bsize*4, bsize*4, 2, 2, 2, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, 2, 1, 1, bsize*2, 1, 1, 1 ]; - st = [ bsize*16, bsize*8, bsize*8, bsize*4, bsize*4, bsize*4, 2, 2, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, 2, 1, 1, 1, bsize*2, 1, 1 ]; - st = [ - bsize*16, - bsize*8, - bsize*8, - bsize*4, - bsize*4, - bsize*4, - bsize*4, - 2, - 2, - 2 - ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, 2, 1, 1, 1, 1, bsize*2, 1 ]; - st = [ - bsize*16, - bsize*8, - bsize*8, - bsize*4, - bsize*4, - bsize*4, - bsize*4, - bsize*4, - 2, - 2 - ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, 2, 1, 1, 1, 1, 1, bsize*2 ]; - st = [ - bsize*16, - bsize*8, - bsize*8, - bsize*4, - bsize*4, - bsize*4, - bsize*4, - bsize*4, - bsize*4, - 2 - ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (column-major, singleton dimensions)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 4 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (column-major, singleton dimensions, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 4 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (column-major, contiguous)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (column-major, contiguous, negative strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ -1, -1, -1, -1, -1, -2, -2, -4, -4, -8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (column-major, non-contiguous, same sign strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 2, 2, 2, 2, 2, 4, 4, 8, 8, 16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (column-major, non-contiguous, mixed sign strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 2, 2, 2, 2, 2, 4, -4, -8, 8, 16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 1, 1, 1, 2, 1, 2, 1, 1, bsize*2 ]; - st = [ 2, 2, 2, 2, 2, 4, 4, -8, -8, -8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 1, 1, 1, 2, 1, 2, 1, bsize*2, 1 ]; - st = [ 2, 2, 2, 2, 2, -4, -4, -8, 8, bsize*16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 1, 1, 1, 2, 1, 2, bsize*2, 1, 1 ]; - st = [ 2, 2, 2, 2, 2, -4, -4, -8, bsize*16, bsize*16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 1, 1, 1, 2, 1, bsize*2, 1, 2, 1 ]; - st = [ 2, 2, 2, 2, 2, 4, -4, -bsize*8, bsize*8, bsize*16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 1, 1, 1, 1, bsize*2, 1, 2, 2, 1 ]; - st = [ 2, 2, 2, 2, 2, -2, bsize*4, -bsize*4, bsize*8, bsize*16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 1, 1, 1, bsize*2, 1, 2, 1, 2, 1 ]; - st = [ 2, 2, 2, 2, 2, -bsize*4, bsize*4, -bsize*8, bsize*8, bsize*16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 1, 1, bsize*2, 1, 1, 2, 1, 2, 1 ]; - st = [ - 2, - 2, - 2, - 2, - bsize*4, - -bsize*4, - bsize*4, - -bsize*8, - bsize*8, - bsize*16 - ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 1, bsize*2, 1, 1, 1, 2, 1, 2, 1 ]; - st = [ - 2, - 2, - 2, - bsize*4, - bsize*4, - -bsize*4, - bsize*4, - -bsize*8, - bsize*8, - bsize*16 - ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, bsize*2, 1, 1, 1, 2, 1, 2, 1, 1 ]; - st = [ - 2, - 2, - bsize*4, - bsize*4, - -bsize*4, - bsize*4, - -bsize*8, - bsize*8, - bsize*16, - bsize*16 - ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 1, 1, 1, 1, 2, 1, 2, 1, 1 ]; - st = [ - 2, - bsize*4, - bsize*4, - bsize*4, - -bsize*4, - bsize*4, - -bsize*8, - bsize*8, - bsize*16, - bsize*16 - ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (column-major, contiguous, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - sh = [ 1, 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( -99.0, -99.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (column-major, contiguous, negative strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - sh = [ 1, 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ -1, -1, -1, -1, -1, -2, -2, -4, -4, -8 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( -99.0, -99.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (column-major, non-contiguous, same sign strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - sh = [ 1, 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 2, 2, 2, 2, 2, 4, 4, 8, 8, 16 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( 64, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (column-major, non-contiguous, mixed sign strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - sh = [ 1, 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 2, 2, 2, 2, 2, 4, -4, -8, 8, 16 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( 64, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 1, 2, 1, 2, 1, 1, 1, 1, 1 ]; - st = [ - 2, - -bsize*4, - -bsize*4, - -bsize*8, - bsize*8, - bsize*16, - bsize*16, - bsize*16, - bsize*16, - bsize*16 - ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, bsize*2, 1, 1, 2, 1, 1, 1, 1, 1 ]; - st = [ - 2, - 4, - -bsize*8, - -bsize*8, - bsize*8, - bsize*16, - bsize*16, - bsize*16, - bsize*16, - bsize*16 - ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, bsize*2, 1, 2, 1, 1, 1, 1, 1 ]; - st = [ - 2, - 4, - -4, - -bsize*8, - bsize*8, - bsize*16, - bsize*16, - bsize*16, - bsize*16, - bsize*16 - ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, bsize*4, 1, 1, 1, 1, 1, 1 ]; - st = [ - 2, - 4, - -4, - -8, - bsize*32, - bsize*32, - bsize*32, - bsize*32, - bsize*32, - bsize*32 - ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, bsize*2, 1, 1, 1, 1, 1 ]; - st = [ - 2, - 4, - -4, - -8, - 8, - bsize*16, - bsize*16, - bsize*16, - bsize*16, - bsize*16 - ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, 1, bsize*2, 1, 1, 1, 1 ]; - st = [ 2, 4, -4, -8, 8, 8, bsize*16, bsize*16, bsize*16, bsize*16 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, 1, 1, bsize*2, 1, 1, 1 ]; - st = [ 2, 4, -4, -8, 8, 8, 8, bsize*16, bsize*16, bsize*16 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, 1, 1, 1, bsize*2, 1, 1 ]; - st = [ 2, 4, -4, -8, 8, 8, 8, 8, bsize*16, bsize*16 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, 1, 1, 1, 1, bsize*2, 1 ]; - st = [ 2, 4, -4, -8, 8, 8, 8, 8, 8, bsize*16 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, 1, 1, 1, 1, 1, bsize*2 ]; - st = [ 2, 4, -4, -8, 8, 8, 8, 8, 8, 8 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (column-major, contiguous, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (column-major, contiguous, negative strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ -1, -1, -1, -1, -1, -2, -2, -4, -4, -8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (column-major, non-contiguous, same sign strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 2, 2, 2, 2, 2, 4, 4, 8, 8, 16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (column-major, non-contiguous, mixed sign strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 2, 2, 2, 2, 2, -4, -4, 8, 8, 16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 1, 1, 1, 1, 2, 1, 2, 1, bsize*2 ]; - st = [ 2, 2, 2, 2, 2, 2, 4, -4, -8, 8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 1, 1, 1, 1, 2, 1, 2, bsize*2, 1 ]; - st = [ 2, 2, 2, 2, 2, 2, 4, -4, -8, bsize*16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 1, 1, 1, 1, 2, 1, bsize*2, 1, 2 ]; - st = [ 2, 2, 2, 2, 2, 2, 4, -4, -bsize*8, bsize*8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 1, 1, 1, 1, 1, bsize*2, 1, 2, 2 ]; - st = [ 2, 2, 2, 2, 2, 2, -2, bsize*4, -bsize*4, bsize*8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 1, 1, 1, 1, bsize*2, 1, 2, 1, 2 ]; - st = [ 2, 2, 2, 2, 2, 2, -bsize*4, bsize*4, -bsize*8, bsize*8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 1, 1, 1, bsize*2, 1, 2, 1, 2, 1 ]; - st = [ - 2, - 2, - 2, - 2, - 2, - bsize*4, - -bsize*4, - bsize*8, - -bsize*8, - bsize*16 - ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 1, 1, bsize*2, 1, 1, 2, 1, 2, 1 ]; - st = [ - 2, - 2, - 2, - 2, - bsize*4, - bsize*4, - -bsize*4, - bsize*8, - -bsize*8, - bsize*16 - ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 1, bsize*2, 1, 1, 1, 2, 1, 2, 1 ]; - st = [ - 2, - 2, - 2, - bsize*4, - bsize*4, - bsize*4, - -bsize*4, - bsize*8, - -bsize*8, - bsize*16 - ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, bsize*2, 1, 1, 1, 1, 2, 1, 2, 1 ]; - st = [ - 2, - 2, - bsize*4, - bsize*4, - bsize*4, - bsize*4, - -bsize*4, - bsize*8, - -bsize*8, - bsize*16 - ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 10-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 1, 1, 1, 1, 1, 2, 1, 2, 1 ]; - st = [ - 2, - bsize*4, - bsize*4, - bsize*4, - bsize*4, - bsize*4, - -bsize*4, - bsize*8, - -bsize*8, - bsize*16 - ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); diff --git a/test/test.1d.js b/test/test.1d.js deleted file mode 100644 index 621a980..0000000 --- a/test/test.1d.js +++ /dev/null @@ -1,104 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var Float64Array = require( '@stdlib/array-float64' ); -var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var oneTo = require( '@stdlib/array-one-to' ); -var scalar2ndarray = require( '@stdlib/ndarray-from-scalar' ); -var ndarray = require( '@stdlib/ndarray-ctor' ); -var includes = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof includes, 'function', 'main export is a function'); - t.end(); -}); - -tape( 'the function tests whether a 1-dimensional ndarray contains a specified value', function test( t ) { - var actual; - var x; - var v; - - x = ndarray( 'float64', oneTo( 8, 'float64' ), [ 4 ], [ 2 ], 1, 'row-major' ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 1-dimensional ndarray contains a specified value (accessors)', function test( t ) { - var actual; - var x; - var v; - - x = ndarray( 'float64', toAccessorArray( oneTo( 8, 'float64' ) ), [ 4 ], [ 2 ], 1, 'row-major' ); - - v = ndarray( 'float64', toAccessorArray( new Float64Array( [ -99.0 ] ) ), [], [ 0 ], 0, 'row-major' ); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = ndarray( 'float64', toAccessorArray( new Float64Array( [ 4.0 ] ) ), [], [ 0 ], 0, 'row-major' ); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 1-dimensional ndarray contains a specified value (complex)', function test( t ) { - var actual; - var xbuf; - var x; - var v; - - xbuf = oneTo( 12, 'float64' ); - x = ndarray( 'complex128', new Complex128Array( xbuf ), [ 4 ], [ 1 ], 1, 'row-major' ); - - v = scalar2ndarray( new Complex128( -1.0, -2.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 9.0, 10.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); diff --git a/test/test.2d.js b/test/test.2d.js deleted file mode 100644 index 597af1b..0000000 --- a/test/test.2d.js +++ /dev/null @@ -1,1423 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var oneTo = require( '@stdlib/array-one-to' ); -var scalar2ndarray = require( '@stdlib/ndarray-from-scalar' ); -var numel = require( '@stdlib/ndarray-base-numel' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var strides2offset = require( '@stdlib/ndarray-base-strides2offset' ); -var ndarray = require( '@stdlib/ndarray-ctor' ); -var blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' ); -var includes = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof includes, 'function', 'main export is a function'); - t.end(); -}); - -tape( 'the function tests whether a 2-dimensional ndarray contains a specified value (row-major, singleton dimensions)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 4, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh ), dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 2-dimensional ndarray contains a specified value (row-major, singleton dimensions, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 4, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 2-dimensional ndarray contains a specified value (row-major, contiguous)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 2, 2 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh ), dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 2-dimensional ndarray contains a specified value (row-major, contiguous, negative strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 2, 2 ]; - st = [ -2, -1 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh ), dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 2-dimensional ndarray contains a specified value (row-major, non-contiguous, same sign strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 2, 2 ]; - st = [ 4, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( 8, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 2-dimensional ndarray contains a specified value (row-major, non-contiguous, mixed sign strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 2, 2 ]; - st = [ 4, -2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( 8, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 2-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 2 ]; - st = [ -4, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 2-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 2, bsize*2 ]; - st = [ bsize*4, -2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 2-dimensional ndarray contains a specified value (row-major, contiguous, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - sh = [ 2, 2 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( -99.0, -99.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 2-dimensional ndarray contains a specified value (row-major, contiguous, negative strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - sh = [ 2, 2 ]; - st = [ -2, -1 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( -99.0, -99.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 2-dimensional ndarray contains a specified value (row-major, non-contiguous, same sign strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - sh = [ 2, 2 ]; - st = [ 4, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( 8*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( -99.0, -99.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 1.0, 2.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 2-dimensional ndarray contains a specified value (row-major, non-contiguous, mixed sign strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - sh = [ 2, 2 ]; - st = [ 4, -2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( 8*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( -99.0, -99.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 1.0, 2.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 2-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 2 ]; - st = [ -4, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( -99.0, -99.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 2-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 2, bsize*2 ]; - st = [ bsize*4, -2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( -99.0, -99.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 2-dimensional ndarray contains a specified value (row-major, contiguous, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 2, 2 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 2-dimensional ndarray contains a specified value (row-major, contiguous, negative strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 2, 2 ]; - st = [ -2, -1 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 2-dimensional ndarray contains a specified value (row-major, non-contiguous, same sign strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 2, 2 ]; - st = [ 4, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( 8, dt ) ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 2-dimensional ndarray contains a specified value (row-major, non-contiguous, mixed sign strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 2, 2 ]; - st = [ 4, -2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( 8, dt ) ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 2-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 2 ]; - st = [ -4, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*2, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 2-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 2, bsize*2 ]; - st = [ bsize*4, -2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*2, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 2-dimensional ndarray contains a specified value (column-major, singleton dimensions)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 4, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh ), dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 2-dimensional ndarray contains a specified value (column-major, singleton dimensions, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 4, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 2-dimensional ndarray contains a specified value (column-major, contiguous)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 2, 2 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh ), dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 2-dimensional ndarray contains a specified value (column-major, contiguous, negative strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 2, 2 ]; - st = [ -1, -2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh ), dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 2-dimensional ndarray contains a specified value (column-major, non-contiguous, same sign strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 2, 2 ]; - st = [ 2, 4 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( 8, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 2-dimensional ndarray contains a specified value (column-major, non-contiguous, mixed sign strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 2, 2 ]; - st = [ -2, 4 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( 8, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 2-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 2 ]; - st = [ 2, -bsize*4 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 2-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, bsize*2 ]; - st = [ -2, 4 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 2-dimensional ndarray contains a specified value (column-major, contiguous, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - sh = [ 2, 2 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( -99.0, -99.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 2-dimensional ndarray contains a specified value (column-major, contiguous, negative strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - sh = [ 2, 2 ]; - st = [ -1, -2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( -99.0, -99.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 2-dimensional ndarray contains a specified value (column-major, non-contiguous, same sign strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - sh = [ 2, 2 ]; - st = [ 2, 4 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( 8*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( -99.0, -99.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 1.0, 2.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 2-dimensional ndarray contains a specified value (column-major, non-contiguous, mixed sign strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - sh = [ 2, 2 ]; - st = [ -2, 4 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( 8*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( -99.0, -99.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 1.0, 2.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 2-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 2 ]; - st = [ -2, bsize*2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( -99.0, -99.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 2-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, bsize*2 ]; - st = [ 2, -4 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( -99.0, -99.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 2-dimensional ndarray contains a specified value (column-major, contiguous, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 2, 2 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 2-dimensional ndarray contains a specified value (column-major, contiguous, negative strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 2, 2 ]; - st = [ -1, -2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 2-dimensional ndarray contains a specified value (column-major, non-contiguous, same sign strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 2, 2 ]; - st = [ 2, 4 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( 8, dt ) ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 2-dimensional ndarray contains a specified value (column-major, non-contiguous, mixed sign strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 2, 2 ]; - st = [ -2, 4 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( 8, dt ) ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 2-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 2 ]; - st = [ -2, bsize*2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*2, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 2-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, bsize*2 ]; - st = [ 2, -4 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*2, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); diff --git a/test/test.3d.js b/test/test.3d.js deleted file mode 100644 index 9480d6d..0000000 --- a/test/test.3d.js +++ /dev/null @@ -1,1643 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var oneTo = require( '@stdlib/array-one-to' ); -var scalar2ndarray = require( '@stdlib/ndarray-from-scalar' ); -var numel = require( '@stdlib/ndarray-base-numel' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var strides2offset = require( '@stdlib/ndarray-base-strides2offset' ); -var ndarray = require( '@stdlib/ndarray-ctor' ); -var blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' ); -var includes = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof includes, 'function', 'main export is a function'); - t.end(); -}); - -tape( 'the function tests whether a 3-dimensional ndarray contains a specified value (row-major, singleton dimensions)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 4, 1, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 3-dimensional ndarray contains a specified value (row-major, singleton dimensions, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 4, 1, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 3-dimensional ndarray contains a specified value (row-major, contiguous)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 2, 1, 2 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 3-dimensional ndarray contains a specified value (row-major, contiguous, negative strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 2, 1, 2 ]; - st = [ -2, -2, -1 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 3-dimensional ndarray contains a specified value (row-major, non-contiguous, same sign strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 2, 1, 2 ]; - st = [ 4, 4, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 3-dimensional ndarray contains a specified value (row-major, non-contiguous, mixed sign strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 2, 1, 2 ]; - st = [ -4, -4, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 3-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 1, 2 ]; - st = [ -4, -4, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 3-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, bsize*2, 2 ]; - st = [ -8, -4, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 3-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, bsize*2 ]; - st = [ bsize*8, bsize*4, -2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 3-dimensional ndarray contains a specified value (row-major, contiguous, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - sh = [ 2, 1, 2 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( -99.0, -99.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 3-dimensional ndarray contains a specified value (row-major, contiguous, negative strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - sh = [ 2, 2, 2 ]; - st = [ -4, -2, -1 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( -99.0, -99.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 3-dimensional ndarray contains a specified value (row-major, non-contiguous, same sign strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - sh = [ 2, 1, 2 ]; - st = [ 4, 4, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( 8*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 1.0, 2.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 3-dimensional ndarray contains a specified value (row-major, non-contiguous, mixed sign strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - sh = [ 2, 1, 2 ]; - st = [ -4, -4, -2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( 8*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 1.0, 2.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 3-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 1, 2 ]; - st = [ -4, -4, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 3-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, bsize*2, 2 ]; - st = [ -8, -4, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 3-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, bsize*2 ]; - st = [ -bsize*8, -bsize*4, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 3-dimensional ndarray contains a specified value (row-major, contiguous, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 2, 1, 2 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 3-dimensional ndarray contains a specified value (row-major, contiguous, negative strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 2, 2, 2 ]; - st = [ -2, -2, -1 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 3-dimensional ndarray contains a specified value (row-major, non-contiguous, same sign strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 2, 1, 2 ]; - st = [ 4, 4, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( 8, dt ) ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 3-dimensional ndarray contains a specified value (row-major, non-contiguous, mixed sign strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 2, 1, 2 ]; - st = [ -4, -4, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( 8, dt ) ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 3-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 1, 2 ]; - st = [ -4, -4, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*2, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 3-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, bsize*2, 2 ]; - st = [ -8, -4, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*2, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 3-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, bsize*2 ]; - st = [ bsize*8, bsize*4, -2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*2, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 3-dimensional ndarray contains a specified value (column-major, singleton dimensions)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 4, 1, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 3-dimensional ndarray contains a specified value (column-major, singleton dimensions, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 4, 1, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 3-dimensional ndarray contains a specified value (column-major, contiguous)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 2, 1, 2 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 3-dimensional ndarray contains a specified value (column-major, contiguous, negative strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 2, 1, 2 ]; - st = [ -1, -2, -2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 3-dimensional ndarray contains a specified value (column-major, non-contiguous, same sign strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 2, 1, 2 ]; - st = [ 2, 4, 4 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( 8, dt ), sh, st, o, ord ); - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 3-dimensional ndarray contains a specified value (column-major, non-contiguous, mixed sign strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 2, 1, 2 ]; - st = [ 2, -4, -4 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( 8, dt ), sh, st, o, ord ); - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 3-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 1, 2 ]; - st = [ 2, -bsize*4, -bsize*4 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 3-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, bsize*2, 2 ]; - st = [ 2, -2, -bsize*4 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 3-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, bsize*2 ]; - st = [ 2, -4, -4 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 3-dimensional ndarray contains a specified value (column-major, contiguous, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - sh = [ 2, 1, 2 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( -99.0, -99.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 3-dimensional ndarray contains a specified value (column-major, contiguous, negative strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - sh = [ 2, 2, 2 ]; - st = [ -1, -2, -4 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( -99.0, -99.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 3-dimensional ndarray contains a specified value (column-major, non-contiguous, same sign strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - sh = [ 2, 1, 2 ]; - st = [ 2, 4, 4 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( 8*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 1.0, 2.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 3-dimensional ndarray contains a specified value (column-major, non-contiguous, mixed sign strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - sh = [ 2, 1, 2 ]; - st = [ -2, -4, -4 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( 8*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 1.0, 2.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 3-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 2, 1 ]; - st = [ 2, -bsize*4, -bsize*8 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 3-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, bsize*2, 2 ]; - st = [ 2, -2, bsize*4 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 3-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, bsize*2 ]; - st = [ 2, -4, -4 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 3-dimensional ndarray contains a specified value (column-major, contiguous, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 2, 1, 2 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 3-dimensional ndarray contains a specified value (column-major, contiguous, negative strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 2, 2, 2 ]; - st = [ -1, -2, -2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 3-dimensional ndarray contains a specified value (column-major, non-contiguous, same sign strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 2, 1, 2 ]; - st = [ 2, 4, 4 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( 8, dt ) ), sh, st, o, ord ); - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 3-dimensional ndarray contains a specified value (column-major, non-contiguous, mixed sign strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 2, 1, 2 ]; - st = [ 2, -4, -4 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( 8, dt ) ), sh, st, o, ord ); - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 3-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 2, 1 ]; - st = [ 2, -bsize*4, -bsize*8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*2, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 3-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, bsize*2, 2 ]; - st = [ -2, -2, -bsize*4 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*2, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 3-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, bsize*2 ]; - st = [ 2, -4, -4 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*2, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); diff --git a/test/test.4d.js b/test/test.4d.js deleted file mode 100644 index b7b318c..0000000 --- a/test/test.4d.js +++ /dev/null @@ -1,1863 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var oneTo = require( '@stdlib/array-one-to' ); -var scalar2ndarray = require( '@stdlib/ndarray-from-scalar' ); -var numel = require( '@stdlib/ndarray-base-numel' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var strides2offset = require( '@stdlib/ndarray-base-strides2offset' ); -var ndarray = require( '@stdlib/ndarray-ctor' ); -var blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' ); -var includes = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof includes, 'function', 'main export is a function'); - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (row-major, singleton dimensions)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 4, 1, 1, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (row-major, singleton dimensions, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 4, 1, 1, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (row-major, contiguous)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 2, 1, 2, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (row-major, contiguous, negative strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 2, 1, 2, 1 ]; - st = [ -2, -2, -1, -1 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (row-major, non-contiguous, same sign strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 2, 1, 2, 1 ]; - st = [ 4, 4, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (row-major, non-contiguous, mixed sign strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 2, 1, 2, 1 ]; - st = [ 4, -4, -2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 1, 2, 1 ]; - st = [ -4, -4, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, bsize*2, 2, 1 ]; - st = [ -bsize*8, -4, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, bsize*2, 1 ]; - st = [ bsize*8, bsize*4, -2, -2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, bsize*2 ]; - st = [ bsize*8, bsize*4, -bsize*4, -2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (row-major, contiguous, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - sh = [ 2, 1, 2, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( -99.0, -99.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (row-major, contiguous, negative strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - sh = [ 2, 2, 1, 2 ]; - st = [ -4, -2, -2, -1 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( -99.0, -99.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (row-major, non-contiguous, same sign strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - sh = [ 2, 1, 2, 1 ]; - st = [ 4, 4, 2, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( 8*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (row-major, non-contiguous, mixed sign strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - sh = [ 2, 1, 2, 1 ]; - st = [ 4, -4, -2, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( 8*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 1, 2, 1 ]; - st = [ -4, -4, 2, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, bsize*2, 2, 1 ]; - st = [ -bsize*8, -4, 2, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, bsize*2, 1 ]; - st = [ -bsize*4, -bsize*4, -2, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 1, bsize*2 ]; - st = [ -bsize*4, -bsize*4, bsize*4, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (row-major, contiguous, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 2, 1, 2, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (row-major, contiguous, negative strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 2, 1, 2, 1 ]; - st = [ -2, -2, -1, -1 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (row-major, non-contiguous, same sign strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 2, 1, 2, 1 ]; - st = [ 4, 4, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( 8, dt ) ), sh, st, o, ord ); - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (row-major, non-contiguous, mixed sign strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 2, 1, 2, 1 ]; - st = [ 4, -4, -2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( 8, dt ) ), sh, st, o, ord ); - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 1, 2, 1 ]; - st = [ -4, -4, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*2, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, bsize*2, 2, 1 ]; - st = [ -bsize*8, -4, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*2, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, bsize*2, 1 ]; - st = [ bsize*4, bsize*4, -2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*2, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 1, bsize*2 ]; - st = [ bsize*4, bsize*4, bsize*4, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*2, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (column-major, singleton dimensions)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 1, 1, 4 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (column-major, singleton dimensions, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 1, 1, 4 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (column-major, contiguous)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 2, 1, 2, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (column-major, contiguous, negative strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 2, 1, 2, 1 ]; - st = [ -1, -2, -2, -4 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (column-major, non-contiguous, same sign strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 2, 1, 2, 1 ]; - st = [ 2, 4, 4, 8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( 8, dt ), sh, st, o, ord ); - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (column-major, non-contiguous, mixed sign strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 2, 1, 2, 1 ]; - st = [ 2, -4, -4, 8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( 8, dt ), sh, st, o, ord ); - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, bsize*2 ]; - st = [ 2, 2, -4, -4 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, bsize*2, 1 ]; - st = [ 2, -2, -4, -bsize*4 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, bsize*2, 1, 2 ]; - st = [ 2, 2, -bsize*4, -bsize*4 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 1, 1, 2 ]; - st = [ 2, -bsize*4, bsize*4, -bsize*4 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (column-major, contiguous, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - sh = [ 2, 1, 2, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( -99.0, -99.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (column-major, contiguous, negative strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - sh = [ 2, 2, 1, 2 ]; - st = [ -1, -2, -4, -4 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( -99.0, -99.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (column-major, non-contiguous, same sign strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - sh = [ 2, 1, 2, 1 ]; - st = [ 2, 4, 4, 8 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( 8*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (column-major, non-contiguous, mixed sign strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - sh = [ 2, 1, 2, 1 ]; - st = [ 2, 4, -4, -8 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( 8*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 1, 2, 1 ]; - st = [ 2, -bsize*4, -bsize*4, -bsize*8 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, bsize*2, 1, 1 ]; - st = [ 2, 2, -bsize*4, -bsize*4 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, bsize*2, 1 ]; - st = [ 2, 4, -4, -bsize*4 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 1, bsize*4 ]; - st = [ 2, 4, -4, -4 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (column-major, contiguous, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 2, 1, 2, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (column-major, contiguous, negative strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 2, 1, 2, 1 ]; - st = [ -1, -2, -2, -4 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (column-major, non-contiguous, same sign strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 2, 1, 2, 1 ]; - st = [ 2, 4, 4, 8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( 8, dt ) ), sh, st, o, ord ); - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (column-major, non-contiguous, mixed sign strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 2, 1, 2, 1 ]; - st = [ 2, -4, -4, 8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( 8, dt ) ), sh, st, o, ord ); - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, bsize*2 ]; - st = [ 2, 2, -4, -4 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*2, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, bsize*2, 1 ]; - st = [ 2, 2, -4, -bsize*4 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*2, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, bsize*2, 1, 2 ]; - st = [ 2, 2, -bsize*4, -bsize*4 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*2, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 4-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 1, 1, 2 ]; - st = [ 2, -bsize*4, bsize*4, -bsize*4 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*2, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); diff --git a/test/test.5d.js b/test/test.5d.js deleted file mode 100644 index 09a9b7b..0000000 --- a/test/test.5d.js +++ /dev/null @@ -1,2083 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var oneTo = require( '@stdlib/array-one-to' ); -var scalar2ndarray = require( '@stdlib/ndarray-from-scalar' ); -var numel = require( '@stdlib/ndarray-base-numel' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var strides2offset = require( '@stdlib/ndarray-base-strides2offset' ); -var ndarray = require( '@stdlib/ndarray-ctor' ); -var blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' ); -var includes = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof includes, 'function', 'main export is a function'); - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (row-major, singleton dimensions)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 4, 1, 1, 1, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (row-major, singleton dimensions, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 4, 1, 1, 1, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (row-major, contiguous)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 2, 1, 2, 1, 2 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (row-major, contiguous, negative strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 2, 1, 2, 1, 2 ]; - st = [ -4, -4, -2, -2, -1 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (row-major, non-contiguous, same sign strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 2, 1, 2, 1, 2 ]; - st = [ 8, 8, 4, 4, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (row-major, non-contiguous, mixed sign strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 2, 1, 2, 1, 2 ]; - st = [ 8, -8, -4, 4, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 1, 2, 1, 2 ]; - st = [ -8, -8, 4, 4, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, bsize*2, 2, 1, 2 ]; - st = [ -bsize*16, -8, 4, 4, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, bsize*2, 1, 2 ]; - st = [ bsize*16, bsize*8, -4, -4, -2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, bsize*2, 2 ]; - st = [ bsize*16, bsize*8, -bsize*8, -4, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, bsize*2 ]; - st = [ bsize*8, bsize*8, -bsize*4, -bsize*4, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (row-major, contiguous, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - sh = [ 2, 1, 2, 1, 2 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( -99.0, -99.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (row-major, contiguous, negative strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - sh = [ 2, 1, 2, 1, 2 ]; - st = [ -4, -4, -2, -2, -1 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( -99.0, -99.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (row-major, non-contiguous, same sign strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - sh = [ 2, 1, 2, 1, 2 ]; - st = [ 8, 8, 4, 4, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( 32, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (row-major, non-contiguous, mixed sign strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - sh = [ 2, 1, 2, 1, 2 ]; - st = [ 8, -8, -4, 4, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( 32, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 1, 2, 1, 2 ]; - st = [ -8, -8, 4, 4, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, bsize*2, 2, 1, 2 ]; - st = [ -bsize*16, -8, 4, 4, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, bsize*2, 1, 2 ]; - st = [ -bsize*16, -bsize*8, -4, 4, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, bsize*2, 1 ]; - st = [ -bsize*8, -bsize*8, bsize*4, 2, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, bsize*2 ]; - st = [ -bsize*8, -bsize*8, bsize*4, bsize*4, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (row-major, contiguous, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 2, 1, 2, 1, 2 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (row-major, contiguous, negative strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 2, 1, 2, 1, 2 ]; - st = [ -4, -4, -2, -2, -1 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (row-major, non-contiguous, same sign strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 2, 1, 2, 1, 2 ]; - st = [ 8, 8, 4, 4, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*2, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (row-major, non-contiguous, mixed sign strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 2, 1, 2, 1, 2 ]; - st = [ 8, -8, -4, 4, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*2, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 1, 2, 1, 2 ]; - st = [ -8, -8, 4, 4, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*2, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, bsize*2, 2, 1, 2 ]; - st = [ -bsize*16, -8, 4, 4, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*2, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, bsize*2, 1, 2 ]; - st = [ bsize*8, bsize*8, -4, 4, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*2, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, bsize*2, 1 ]; - st = [ bsize*8, bsize*8, bsize*4, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*2, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, bsize*2 ]; - st = [ bsize*8, bsize*8, bsize*4, bsize*4, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*2, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (column-major, singleton dimensions)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 1, 1, 1, 4 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (column-major, singleton dimensions, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 1, 1, 1, 4 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (column-major, contiguous)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 2, 1, 2, 1, 2 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (column-major, contiguous, negative strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 2, 1, 2, 1, 2 ]; - st = [ -1, -2, -2, -4, -4 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (column-major, non-contiguous, same sign strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 2, 1, 2, 1, 2 ]; - st = [ 2, 4, 4, 8, 8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (column-major, non-contiguous, mixed sign strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 2, 1, 2, 1, 2 ]; - st = [ 2, 4, -4, -8, 8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*2, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, bsize*2 ]; - st = [ 2, 4, 4, -8, -8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, bsize*2, 1 ]; - st = [ 2, -4, -4, -8, bsize*16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, bsize*2, 1, 2 ]; - st = [ 2, 4, -4, -bsize*8, bsize*8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, bsize*2, 1, 2, 2 ]; - st = [ 2, -2, bsize*4, -bsize*4, bsize*8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 1, 2, 1, 2 ]; - st = [ 2, -bsize*4, bsize*4, -bsize*8, bsize*8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*2, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (column-major, contiguous, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - sh = [ 2, 1, 2, 1, 2 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( -99.0, -99.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (column-major, contiguous, negative strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - sh = [ 2, 1, 2, 1, 2 ]; - st = [ -1, -2, -2, -4, -4 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( -99.0, -99.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (column-major, non-contiguous, same sign strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - sh = [ 2, 1, 2, 1, 2 ]; - st = [ 2, 4, 4, 8, 8 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( 32, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (column-major, non-contiguous, mixed sign strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - sh = [ 2, 1, 2, 1, 2 ]; - st = [ 2, 4, -4, -8, 8 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( 32, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 1, 2, 1, 2 ]; - st = [ 2, -bsize*4, -bsize*4, -bsize*8, bsize*8 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, bsize*2, 1, 1, 2 ]; - st = [ 2, 4, -bsize*8, -bsize*8, bsize*8 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, bsize*2, 1, 2 ]; - st = [ 2, 4, -4, -bsize*8, bsize*8 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, bsize*4, 1 ]; - st = [ 2, 4, -4, -8, bsize*32 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, bsize*2 ]; - st = [ 2, 4, -4, -8, 8 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (column-major, contiguous, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 2, 1, 2, 1, 2 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (column-major, contiguous, negative strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 2, 1, 2, 1, 2 ]; - st = [ -1, -2, -2, -4, -4 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (column-major, non-contiguous, same sign strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 2, 1, 2, 1, 2 ]; - st = [ 2, 4, 4, 8, 8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*2, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (column-major, non-contiguous, mixed sign strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 2, 1, 2, 1, 2 ]; - st = [ 2, -4, -4, 8, 8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*2, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, bsize*2 ]; - st = [ 2, 4, -4, -8, 8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*2, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, bsize*2, 1 ]; - st = [ 2, 4, -4, -8, bsize*16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*2, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, bsize*2, 1, 2 ]; - st = [ 2, 4, -4, -bsize*8, bsize*8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*2, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, bsize*2, 1, 2, 2 ]; - st = [ 2, -2, bsize*4, -bsize*4, bsize*8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*2, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 5-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 1, 2, 1, 2 ]; - st = [ 2, -bsize*4, bsize*4, -bsize*8, bsize*8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*2, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); diff --git a/test/test.6d.js b/test/test.6d.js deleted file mode 100644 index e3b9c9c..0000000 --- a/test/test.6d.js +++ /dev/null @@ -1,2303 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var oneTo = require( '@stdlib/array-one-to' ); -var scalar2ndarray = require( '@stdlib/ndarray-from-scalar' ); -var numel = require( '@stdlib/ndarray-base-numel' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var strides2offset = require( '@stdlib/ndarray-base-strides2offset' ); -var ndarray = require( '@stdlib/ndarray-ctor' ); -var blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' ); -var includes = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof includes, 'function', 'main export is a function'); - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (row-major, singleton dimensions)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 4, 1, 1, 1, 1, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (row-major, singleton dimensions, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 4, 1, 1, 1, 1, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (row-major, contiguous)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 2, 1, 2, 1, 2, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (row-major, contiguous, negative strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 2, 1, 2, 1, 2, 1 ]; - st = [ -4, -4, -2, -2, -1, -1 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (row-major, non-contiguous, same sign strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 2, 1, 2, 1, 2, 1 ]; - st = [ 8, 8, 4, 4, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (row-major, non-contiguous, mixed sign strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 2, 1, 2, 1, 2, 1 ]; - st = [ 8, 8, 4, 4, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 1, 2, 1, 2, 1 ]; - st = [ -8, -8, 4, 4, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, bsize*2, 2, 1, 2, 1 ]; - st = [ -bsize*16, -8, 4, 4, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, bsize*2, 1, 2, 1 ]; - st = [ bsize*16, bsize*8, -4, -4, -2, -2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, bsize*2, 2, 1 ]; - st = [ bsize*16, bsize*8, -bsize*8, -4, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, bsize*2, 1 ]; - st = [ bsize*8, bsize*8, -bsize*4, -bsize*4, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, 1, bsize*2 ]; - st = [ bsize*8, bsize*8, -bsize*4, -bsize*4, bsize*4, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (row-major, contiguous, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - sh = [ 2, 1, 2, 1, 2, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( -99.0, -99.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (row-major, contiguous, negative strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - sh = [ 2, 1, 2, 1, 2, 1 ]; - st = [ -4, -4, -2, -2, -1, -1 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( -99.0, -99.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (row-major, non-contiguous, same sign strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - sh = [ 2, 1, 2, 1, 2, 1 ]; - st = [ 8, 8, 4, 4, 2, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( 64, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (row-major, non-contiguous, mixed sign strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - sh = [ 2, 1, 2, 1, 2, 1 ]; - st = [ 8, -8, -4, 4, 2, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( 64, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 1, 2, 1, 2, 1 ]; - st = [ -8, -8, 4, 4, 2, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, bsize*2, 2, 1, 2, 1 ]; - st = [ -bsize*16, -8, 4, 4, 2, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, bsize*2, 1, 2, 1 ]; - st = [ -bsize*16, -bsize*8, -4, 4, 2, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, bsize*2, 1, 1 ]; - st = [ -bsize*8, -bsize*8, bsize*4, 2, 2, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, bsize*2, 1 ]; - st = [ -bsize*8, -bsize*8, bsize*4, bsize*4, 2, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, 1, bsize*2 ]; - st = [ -bsize*8, -bsize*8, bsize*4, bsize*4, bsize*4, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (row-major, contiguous, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 2, 1, 2, 1, 2, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (row-major, contiguous, negative strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 2, 1, 2, 1, 2, 1 ]; - st = [ -4, -4, -2, -2, -1, -1 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (row-major, non-contiguous, same sign strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 2, 1, 2, 1, 2, 1 ]; - st = [ 8, 8, 4, 4, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (row-major, non-contiguous, mixed sign strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 2, 1, 2, 1, 2, 1 ]; - st = [ 8, -8, -4, 4, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 1, 2, 1, 2, 1 ]; - st = [ -8, -8, 4, 4, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, bsize*2, 2, 1, 2, 1 ]; - st = [ -bsize*16, -8, 4, 4, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, bsize*2, 1, 2, 1 ]; - st = [ bsize*8, bsize*8, -4, 4, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, bsize*2, 1, 1 ]; - st = [ bsize*8, bsize*8, bsize*4, 2, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, bsize*2, 1 ]; - st = [ bsize*8, bsize*8, bsize*4, bsize*4, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, 1, bsize*2 ]; - st = [ bsize*8, bsize*8, bsize*4, bsize*4, bsize*4, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (column-major, singleton dimensions)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 1, 1, 1, 1, 4 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (column-major, singleton dimensions, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 1, 1, 1, 1, 4 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (column-major, contiguous)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 2, 1, 2, 1, 2, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (column-major, contiguous, negative strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 2, 1, 2, 1, 2, 1 ]; - st = [ -1, -2, -2, -4, -4, -8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (column-major, non-contiguous, same sign strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 2, 1, 2, 1, 2, 1 ]; - st = [ 2, 4, 4, 8, 8, 16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (column-major, non-contiguous, mixed sign strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 2, 1, 2, 1, 2, 1 ]; - st = [ 2, 4, -4, -8, 8, 16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, 1, bsize*2 ]; - st = [ 2, 4, 4, -8, -8, -8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, bsize*2, 1 ]; - st = [ 2, -4, -4, -8, 8, bsize*16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, bsize*2, 1, 1 ]; - st = [ 2, -4, -4, -8, bsize*16, bsize*16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, bsize*2, 1, 2, 1 ]; - st = [ 2, 4, -4, -bsize*8, bsize*8, bsize*16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, bsize*2, 1, 2, 2, 1 ]; - st = [ 2, -2, bsize*4, -bsize*4, bsize*8, bsize*16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 1, 2, 1, 2, 1 ]; - st = [ 2, -bsize*4, bsize*4, -bsize*8, bsize*8, bsize*16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (column-major, contiguous, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - sh = [ 2, 1, 2, 1, 2, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( -99.0, -99.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (column-major, contiguous, negative strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - sh = [ 2, 1, 2, 1, 2, 1 ]; - st = [ -1, -2, -2, -4, -4, -8 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( -99.0, -99.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (column-major, non-contiguous, same sign strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - sh = [ 2, 1, 2, 1, 2, 1 ]; - st = [ 2, 4, 4, 8, 8, 16 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( 64, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (column-major, non-contiguous, mixed sign strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - sh = [ 2, 1, 2, 1, 2, 1 ]; - st = [ 2, 4, -4, -8, 8, 16 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( 64, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 1, 2, 1, 2, 1 ]; - st = [ 2, -bsize*4, -bsize*4, -bsize*8, bsize*8, bsize*16 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, bsize*2, 1, 1, 2, 1 ]; - st = [ 2, 4, -bsize*8, -bsize*8, bsize*8, bsize*16 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, bsize*2, 1, 2, 1 ]; - st = [ 2, 4, -4, -bsize*8, bsize*8, bsize*16 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, bsize*4, 1, 1 ]; - st = [ 2, 4, -4, -8, bsize*32, bsize*32 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, bsize*2, 1 ]; - st = [ 2, 4, -4, -8, 8, bsize*16 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, 1, bsize*2 ]; - st = [ 2, 4, -4, -8, 8, 8 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (column-major, contiguous, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 2, 1, 2, 1, 2, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (column-major, contiguous, negative strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 2, 1, 2, 1, 2, 1 ]; - st = [ -1, -2, -2, -4, -4, -8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (column-major, non-contiguous, same sign strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 2, 1, 2, 1, 2, 1 ]; - st = [ 2, 4, 4, 8, 8, 16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (column-major, non-contiguous, mixed sign strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 2, 1, 2, 1, 2, 1 ]; - st = [ 2, -4, -4, 8, 8, 16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, 2, 1, bsize*2 ]; - st = [ 2, 2, 4, -4, -8, 8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, 2, bsize*2, 1 ]; - st = [ 2, 2, 4, -4, -8, bsize*16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, bsize*2, 1, 2 ]; - st = [ 2, 2, 4, -4, -bsize*8, bsize*8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 1, bsize*2, 1, 2, 2 ]; - st = [ 2, 2, -2, bsize*4, -bsize*4, bsize*8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, bsize*2, 1, 2, 1, 2 ]; - st = [ 2, 2, -bsize*4, bsize*4, -bsize*8, bsize*8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 6-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 1, 2, 1, 2, 1 ]; - st = [ 2, bsize*4, -bsize*4, bsize*8, -bsize*8, bsize*16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); diff --git a/test/test.7d.js b/test/test.7d.js deleted file mode 100644 index 9f938e9..0000000 --- a/test/test.7d.js +++ /dev/null @@ -1,2523 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var oneTo = require( '@stdlib/array-one-to' ); -var scalar2ndarray = require( '@stdlib/ndarray-from-scalar' ); -var numel = require( '@stdlib/ndarray-base-numel' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var strides2offset = require( '@stdlib/ndarray-base-strides2offset' ); -var ndarray = require( '@stdlib/ndarray-ctor' ); -var blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' ); -var includes = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof includes, 'function', 'main export is a function'); - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (row-major, singleton dimensions)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 4, 1, 1, 1, 1, 1, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (row-major, singleton dimensions, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 4, 1, 1, 1, 1, 1, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (row-major, contiguous)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 1, 2, 1, 2, 1, 2, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (row-major, contiguous, negative strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 1, 2, 1, 2, 1, 2, 1 ]; - st = [ -4, -4, -4, -2, -2, -1, -1 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (row-major, non-contiguous, same sign strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 8, 8, 8, 4, 4, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (row-major, non-contiguous, mixed sign strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 8, 8, 8, 4, 4, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 1, 1, 2, 1, 2, 1 ]; - st = [ -8, -8, -8, 4, 4, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, bsize*2, 1, 2, 1, 2, 1 ]; - st = [ -bsize*16, -8, -8, 4, 4, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, bsize*2, 1, 1, 2, 1 ]; - st = [ bsize*16, bsize*8, 4, -4, -4, -2, -2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, bsize*2, 1, 2, 1 ]; - st = [ bsize*16, bsize*8, bsize*8, -4, -4, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, bsize*2, 1, 1 ]; - st = [ bsize*8, bsize*8, bsize*4, -bsize*4, -2, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, 1, bsize*2, 1 ]; - st = [ bsize*8, bsize*8, bsize*4, -bsize*4, -bsize*4, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, 1, 1, bsize*2 ]; - st = [ bsize*8, bsize*8, bsize*4, -bsize*4, -bsize*4, bsize*4, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (row-major, contiguous, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - sh = [ 1, 2, 1, 2, 1, 2, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( -99.0, -99.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (row-major, contiguous, negative strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - sh = [ 1, 2, 1, 2, 1, 2, 1 ]; - st = [ -4, -4, -4, -2, -2, -1, -1 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( -99.0, -99.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (row-major, non-contiguous, same sign strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - sh = [ 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 8, 8, 8, 4, 4, 2, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( 64, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (row-major, non-contiguous, mixed sign strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - sh = [ 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 8, 8, -8, -4, 4, 2, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( 64, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 1, 2, 1, 2, 1, 1 ]; - st = [ -8, -8, 4, 4, 2, 2, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, bsize*2, 2, 1, 2, 1, 1 ]; - st = [ -bsize*16, -8, 4, 4, 2, 2, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, bsize*2, 1, 2, 1, 1 ]; - st = [ -bsize*16, -bsize*8, -4, 4, 2, 2, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, bsize*2, 1, 1, 1 ]; - st = [ -bsize*8, -bsize*8, bsize*4, 2, 2, 2, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, 2, bsize*2, 1, 1 ]; - st = [ -bsize*16, -bsize*8, bsize*4, 2, 2, 2, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, 2, 1, bsize*2, 1 ]; - st = [ -bsize*16, -bsize*8, -bsize*8, bsize*4, bsize*4, 2, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, 2, 1, 1, bsize*2 ]; - st = [ -bsize*16, -bsize*8, -bsize*8, bsize*4, bsize*4, bsize*4, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (row-major, contiguous, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 1, 2, 1, 2, 1, 2, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (row-major, contiguous, negative strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 1, 2, 1, 2, 1, 2, 1 ]; - st = [ -8, -4, -4, -2, -2, -1, -1 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (row-major, non-contiguous, same sign strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 16, 8, 8, 4, 4, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (row-major, non-contiguous, mixed sign strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 16, 8, -8, -4, 4, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 1, 2, 1, 2, 1, 1 ]; - st = [ -8, -8, 4, 4, 2, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, bsize*2, 2, 1, 2, 1, 1 ]; - st = [ -bsize*16, -8, 4, 4, 2, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, bsize*2, 1, 2, 1, 1 ]; - st = [ bsize*8, bsize*8, -4, 4, 2, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, bsize*2, 2, 1, 1 ]; - st = [ bsize*16, bsize*8, -bsize*8, 4, 2, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, 2, bsize*2, 1, 1 ]; - st = [ bsize*16, bsize*8, bsize*8, bsize*4, 2, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, 2, 1, bsize*2, 1 ]; - st = [ bsize*16, bsize*8, bsize*8, bsize*4, bsize*4, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, 2, 1, 1, bsize*2 ]; - st = [ bsize*16, bsize*8, bsize*8, bsize*4, bsize*4, bsize*4, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (column-major, singleton dimensions)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 1, 1, 1, 1, 1, 4 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (column-major, singleton dimensions, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 1, 1, 1, 1, 1, 4 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (column-major, contiguous)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 2, 1, 2, 1, 2, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (column-major, contiguous, negative strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 2, 1, 2, 1, 2, 1 ]; - st = [ -1, -1, -2, -2, -4, -4, -8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (column-major, non-contiguous, same sign strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 2, 2, 4, 4, 8, 8, 16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (column-major, non-contiguous, mixed sign strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 2, 2, 4, -4, -8, 8, 16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, 2, 1, 1, bsize*2 ]; - st = [ 2, 2, 4, 4, -8, -8, -8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, 2, 1, bsize*2, 1 ]; - st = [ 2, 2, -4, -4, -8, 8, bsize*16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, 2, bsize*2, 1, 1 ]; - st = [ 2, 2, -4, -4, -8, bsize*16, bsize*16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, bsize*2, 1, 2, 1 ]; - st = [ 2, 2, 4, -4, -bsize*8, bsize*8, bsize*16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 1, bsize*2, 1, 2, 2, 1 ]; - st = [ 2, 2, -2, bsize*4, -bsize*4, bsize*8, bsize*16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, bsize*2, 1, 2, 1, 2, 1 ]; - st = [ 2, 2, -bsize*4, bsize*4, -bsize*8, bsize*8, bsize*16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 1, 1, 2, 1, 2, 1 ]; - st = [ 2, bsize*4, -bsize*4, bsize*4, -bsize*8, bsize*8, bsize*16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (column-major, contiguous, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - sh = [ 1, 2, 1, 2, 1, 2, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( -99.0, -99.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (column-major, contiguous, negative strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - sh = [ 1, 2, 1, 2, 1, 2, 1 ]; - st = [ -1, -1, -2, -2, -4, -4, -8 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( -99.0, -99.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (column-major, non-contiguous, same sign strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - sh = [ 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 2, 2, 4, 4, 8, 8, 16 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( 64, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (column-major, non-contiguous, mixed sign strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - sh = [ 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 2, 2, 4, -4, -8, 8, 16 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( 64, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 1, 2, 1, 2, 1, 1 ]; - st = [ 2, -bsize*4, -bsize*4, -bsize*8, bsize*8, bsize*16, bsize*16 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, bsize*2, 1, 1, 2, 1, 1 ]; - st = [ 2, 4, -bsize*8, -bsize*8, bsize*8, bsize*16, bsize*16 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, bsize*2, 1, 2, 1, 1 ]; - st = [ 2, 4, -4, -bsize*8, bsize*8, bsize*16, bsize*16 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, bsize*4, 1, 1, 1 ]; - st = [ 2, 4, -4, -8, bsize*32, bsize*32, bsize*32 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, bsize*2, 1, 1 ]; - st = [ 2, 4, -4, -8, 8, bsize*16, bsize*16 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, 1, bsize*2, 1 ]; - st = [ 2, 4, -4, -8, 8, 8, bsize*16 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, 1, 1, bsize*2 ]; - st = [ 2, 4, -4, -8, 8, 8, 8 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (column-major, contiguous, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 2, 1, 2, 1, 2, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (column-major, contiguous, negative strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 2, 1, 2, 1, 2, 1 ]; - st = [ -1, -1, -2, -2, -4, -4, -8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (column-major, non-contiguous, same sign strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 2, 2, 4, 4, 8, 8, 16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (column-major, non-contiguous, mixed sign strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 2, 2, -4, -4, 8, 8, 16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 1, 2, 1, 2, 1, bsize*2 ]; - st = [ 2, 2, 2, 4, -4, -8, 8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 1, 2, 1, 2, bsize*2, 1 ]; - st = [ 2, 2, 2, 4, -4, -8, bsize*16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 1, 2, 1, bsize*2, 1, 2 ]; - st = [ 2, 2, 2, 4, -4, -bsize*8, bsize*8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 1, 1, bsize*2, 1, 2, 2 ]; - st = [ 2, 2, 2, -2, bsize*4, -bsize*4, bsize*8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 1, bsize*2, 1, 2, 1, 2 ]; - st = [ 2, 2, 2, -bsize*4, bsize*4, -bsize*8, bsize*8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, bsize*2, 1, 2, 1, 2, 1 ]; - st = [ 2, 2, bsize*4, -bsize*4, bsize*8, -bsize*8, bsize*16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 7-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 1, 1, 2, 1, 2, 1 ]; - st = [ 2, bsize*4, bsize*4, -bsize*4, bsize*8, -bsize*8, bsize*16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); diff --git a/test/test.8d.js b/test/test.8d.js deleted file mode 100644 index 0b55e93..0000000 --- a/test/test.8d.js +++ /dev/null @@ -1,2743 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var oneTo = require( '@stdlib/array-one-to' ); -var scalar2ndarray = require( '@stdlib/ndarray-from-scalar' ); -var numel = require( '@stdlib/ndarray-base-numel' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var strides2offset = require( '@stdlib/ndarray-base-strides2offset' ); -var ndarray = require( '@stdlib/ndarray-ctor' ); -var blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' ); -var includes = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof includes, 'function', 'main export is a function'); - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (row-major, singleton dimensions)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 4, 1, 1, 1, 1, 1, 1, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (row-major, singleton dimensions, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 4, 1, 1, 1, 1, 1, 1, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (row-major, contiguous)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (row-major, contiguous, negative strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ -8, -8, -4, -4, -2, -2, -1, -1 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (row-major, non-contiguous, same sign strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 8, 8, 8, 8, 4, 4, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (row-major, non-contiguous, mixed sign strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 8, 8, 8, 8, 4, 4, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 1, 1, 2, 1, 2, 1, 1 ]; - st = [ -8, -8, -8, 4, 4, 2, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, bsize*2, 1, 2, 1, 2, 1, 1 ]; - st = [ -bsize*16, -8, -8, 4, 4, 2, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, bsize*2, 1, 1, 2, 1, 1 ]; - st = [ bsize*16, bsize*8, 4, -4, -4, -2, -2, -2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, bsize*2, 1, 2, 1, 1 ]; - st = [ bsize*16, bsize*8, bsize*8, -4, -4, 2, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, bsize*2, 1, 1, 1 ]; - st = [ bsize*8, bsize*8, bsize*4, -bsize*4, -2, 2, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, 1, bsize*2, 1, 1 ]; - st = [ bsize*8, bsize*8, bsize*4, -bsize*4, -bsize*4, 2, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, 1, 1, bsize*2, 1 ]; - st = [ bsize*8, bsize*8, bsize*4, -bsize*4, -bsize*4, bsize*4, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, 1, 1, 1, bsize*2 ]; - st = [ bsize*8, bsize*8, bsize*4, -bsize*4, -bsize*4, bsize*4, bsize*4, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (row-major, contiguous, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - sh = [ 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( -99.0, -99.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (row-major, contiguous, negative strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - sh = [ 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ -4, -4, -4, -4, -2, -2, -1, -1 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( -99.0, -99.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (row-major, non-contiguous, same sign strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - sh = [ 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 8, 8, 8, 8, 4, 4, 2, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( 64, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (row-major, non-contiguous, mixed sign strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - sh = [ 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 8, 8, 8, -8, -4, 4, 2, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( 64, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 1, 2, 1, 2, 1, 1, 1 ]; - st = [ -8, -8, 4, 4, 2, 2, 2, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, bsize*2, 2, 1, 2, 1, 1, 1 ]; - st = [ -bsize*16, -8, 4, 4, 2, 2, 2, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, bsize*2, 1, 2, 1, 1, 1 ]; - st = [ -bsize*16, -bsize*8, -4, 4, 2, 2, 2, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, bsize*2, 1, 1, 1, 1 ]; - st = [ -bsize*8, -bsize*8, bsize*4, 2, 2, 2, 2, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, 2, bsize*2, 1, 1, 1 ]; - st = [ -bsize*16, -bsize*8, bsize*4, 2, 2, 2, 2, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, 2, 1, bsize*2, 1, 1 ]; - st = [ -bsize*16, -bsize*8, -bsize*8, bsize*4, bsize*4, 2, 2, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, 2, 1, 1, bsize*2, 1 ]; - st = [ -bsize*16, -bsize*8, -bsize*8, bsize*4, bsize*4, bsize*4, 2, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, 2, 1, 1, 1, bsize*2 ]; - st = [ -bsize*16, -bsize*8, -bsize*8, bsize*4, bsize*4, bsize*4, bsize*4, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (row-major, contiguous, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (row-major, contiguous, negative strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ -8, -8, -4, -4, -2, -2, -1, -1 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (row-major, non-contiguous, same sign strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 16, 16, 8, 8, 4, 4, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (row-major, non-contiguous, mixed sign strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 16, 16, 8, -8, -4, 4, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 1, 2, 1, 2, 1, 1, 1 ]; - st = [ -8, -8, 4, 4, 2, 2, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, bsize*2, 2, 1, 2, 1, 1, 1 ]; - st = [ -bsize*16, -8, 4, 4, 2, 2, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, bsize*2, 1, 2, 1, 1, 1 ]; - st = [ bsize*8, bsize*8, -4, 4, 2, 2, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, bsize*2, 2, 1, 1, 1 ]; - st = [ bsize*16, bsize*8, -bsize*8, 4, 2, 2, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, 2, bsize*2, 1, 1, 1 ]; - st = [ bsize*16, bsize*8, bsize*8, bsize*4, 2, 2, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, 2, 1, bsize*2, 1, 1 ]; - st = [ bsize*16, bsize*8, bsize*8, bsize*4, bsize*4, 2, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, 2, 1, 1, bsize*2, 1 ]; - st = [ bsize*16, bsize*8, bsize*8, bsize*4, bsize*4, bsize*4, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, 2, 1, 1, 1, bsize*2 ]; - st = [ bsize*16, bsize*8, bsize*8, bsize*4, bsize*4, bsize*4, bsize*4, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (column-major, singleton dimensions)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 1, 1, 1, 1, 1, 1, 4 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (column-major, singleton dimensions, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 1, 1, 1, 1, 1, 1, 4 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (column-major, contiguous)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (column-major, contiguous, negative strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ -1, -1, -1, -2, -2, -4, -4, -8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (column-major, non-contiguous, same sign strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 2, 2, 2, 4, 4, 8, 8, 16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (column-major, non-contiguous, mixed sign strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 2, 2, 2, 4, -4, -8, 8, 16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 1, 2, 1, 2, 1, 1, bsize*2 ]; - st = [ 2, 2, 2, 4, 4, -8, -8, -8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 1, 2, 1, 2, 1, bsize*2, 1 ]; - st = [ 2, 2, 2, -4, -4, -8, 8, bsize*16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 1, 2, 1, 2, bsize*2, 1, 1 ]; - st = [ 2, 2, 2, -4, -4, -8, bsize*16, bsize*16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 1, 2, 1, bsize*2, 1, 2, 1 ]; - st = [ 2, 2, 2, 4, -4, -bsize*8, bsize*8, bsize*16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 1, 1, bsize*2, 1, 2, 2, 1 ]; - st = [ 2, 2, 2, -2, bsize*4, -bsize*4, bsize*8, bsize*16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 1, bsize*2, 1, 2, 1, 2, 1 ]; - st = [ 2, 2, 2, -bsize*4, bsize*4, -bsize*8, bsize*8, bsize*16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, bsize*2, 1, 1, 2, 1, 2, 1 ]; - st = [ 2, 2, bsize*4, -bsize*4, bsize*4, -bsize*8, bsize*8, bsize*16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 1, 1, 1, 2, 1, 2, 1 ]; - st = [ 2, bsize*4, bsize*4, -bsize*4, bsize*4, -bsize*8, bsize*8, bsize*16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (column-major, contiguous, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - sh = [ 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( -99.0, -99.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (column-major, contiguous, negative strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - sh = [ 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ -1, -1, -1, -2, -2, -4, -4, -8 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( -99.0, -99.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (column-major, non-contiguous, same sign strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - sh = [ 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 2, 2, 2, 4, 4, 8, 8, 16 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( 64, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (column-major, non-contiguous, mixed sign strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - sh = [ 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 2, 2, 2, 4, -4, -8, 8, 16 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( 64, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 1, 2, 1, 2, 1, 1, 1 ]; - st = [ 2, -bsize*4, -bsize*4, -bsize*8, bsize*8, bsize*16, bsize*16, bsize*16 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, bsize*2, 1, 1, 2, 1, 1, 1 ]; - st = [ 2, 4, -bsize*8, -bsize*8, bsize*8, bsize*16, bsize*16, bsize*16 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, bsize*2, 1, 2, 1, 1, 1 ]; - st = [ 2, 4, -4, -bsize*8, bsize*8, bsize*16, bsize*16, bsize*16 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, bsize*4, 1, 1, 1, 1 ]; - st = [ 2, 4, -4, -8, bsize*32, bsize*32, bsize*32, bsize*32 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, bsize*2, 1, 1, 1 ]; - st = [ 2, 4, -4, -8, 8, bsize*16, bsize*16, bsize*16 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, 1, bsize*2, 1, 1 ]; - st = [ 2, 4, -4, -8, 8, 8, bsize*16, bsize*16 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, 1, 1, bsize*2, 1 ]; - st = [ 2, 4, -4, -8, 8, 8, 8, bsize*16 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, 1, 1, 1, bsize*2 ]; - st = [ 2, 4, -4, -8, 8, 8, 8, 8 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (column-major, contiguous, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (column-major, contiguous, negative strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ -1, -1, -1, -2, -2, -4, -4, -8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (column-major, non-contiguous, same sign strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 2, 2, 2, 4, 4, 8, 8, 16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (column-major, non-contiguous, mixed sign strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 2, 2, 2, -4, -4, 8, 8, 16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 1, 1, 2, 1, 2, 1, bsize*2 ]; - st = [ 2, 2, 2, 2, 4, -4, -8, 8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 1, 1, 2, 1, 2, bsize*2, 1 ]; - st = [ 2, 2, 2, 2, 4, -4, -8, bsize*16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 1, 1, 2, 1, bsize*2, 1, 2 ]; - st = [ 2, 2, 2, 2, 4, -4, -bsize*8, bsize*8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 1, 1, 1, bsize*2, 1, 2, 2 ]; - st = [ 2, 2, 2, 2, -2, bsize*4, -bsize*4, bsize*8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 1, 1, bsize*2, 1, 2, 1, 2 ]; - st = [ 2, 2, 2, 2, -bsize*4, bsize*4, -bsize*8, bsize*8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 1, bsize*2, 1, 2, 1, 2, 1 ]; - st = [ 2, 2, 2, bsize*4, -bsize*4, bsize*8, -bsize*8, bsize*16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, bsize*2, 1, 1, 2, 1, 2, 1 ]; - st = [ 2, 2, bsize*4, bsize*4, -bsize*4, bsize*8, -bsize*8, bsize*16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 8-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 1, 1, 1, 2, 1, 2, 1 ]; - st = [ 2, bsize*4, bsize*4, bsize*4, -bsize*4, bsize*8, -bsize*8, bsize*16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); diff --git a/test/test.9d.js b/test/test.9d.js deleted file mode 100644 index 67fd749..0000000 --- a/test/test.9d.js +++ /dev/null @@ -1,3103 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var oneTo = require( '@stdlib/array-one-to' ); -var scalar2ndarray = require( '@stdlib/ndarray-from-scalar' ); -var numel = require( '@stdlib/ndarray-base-numel' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var strides2offset = require( '@stdlib/ndarray-base-strides2offset' ); -var ndarray = require( '@stdlib/ndarray-ctor' ); -var blockSize = require( '@stdlib/ndarray-base-nullary-tiling-block-size' ); -var includes = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof includes, 'function', 'main export is a function'); - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (row-major, singleton dimensions)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 4, 1, 1, 1, 1, 1, 1, 1, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (row-major, singleton dimensions, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 4, 1, 1, 1, 1, 1, 1, 1, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (row-major, contiguous)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (row-major, contiguous, negative strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ -8, -8, -8, -4, -4, -2, -2, -1, -1 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (row-major, non-contiguous, same sign strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 8, 8, 8, 8, 8, 4, 4, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (row-major, non-contiguous, mixed sign strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 8, 8, 8, 8, 8, 4, 4, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 1, 1, 2, 1, 2, 1, 1, 1 ]; - st = [ -8, -8, -8, 4, 4, 2, 2, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, bsize*2, 1, 2, 1, 2, 1, 1, 1 ]; - st = [ -bsize*16, -8, -8, 4, 4, 2, 2, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, bsize*2, 1, 1, 2, 1, 1, 1 ]; - st = [ bsize*16, bsize*8, 4, -4, -4, -2, -2, -2, -2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, bsize*2, 1, 2, 1, 1, 1 ]; - st = [ bsize*16, bsize*8, bsize*8, -4, -4, 2, 2, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, bsize*2, 1, 1, 1, 1 ]; - st = [ bsize*8, bsize*8, bsize*4, -bsize*4, -2, 2, 2, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, 1, bsize*2, 1, 1, 1 ]; - st = [ bsize*8, bsize*8, bsize*4, -bsize*4, -bsize*4, 2, 2, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, 1, 1, bsize*2, 1, 1 ]; - st = [ bsize*8, bsize*8, bsize*4, -bsize*4, -bsize*4, bsize*4, 2, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, 1, 1, 1, bsize*2, 1 ]; - st = [ - bsize*8, - bsize*8, - bsize*4, - -bsize*4, - -bsize*4, - bsize*4, - bsize*4, - 2, - 2 - ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, 1, 1, 1, 1, bsize*2 ]; - st = [ - bsize*8, - bsize*8, - bsize*4, - -bsize*4, - -bsize*4, - bsize*4, - bsize*4, - bsize*4, - 2 - ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (row-major, contiguous, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - sh = [ 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( -99.0, -99.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (row-major, contiguous, negative strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - sh = [ 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ -4, -4, -4, -4, -4, -2, -2, -1, -1 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( -99.0, -99.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (row-major, non-contiguous, same sign strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - sh = [ 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 8, 8, 8, 8, 8, 4, 4, 2, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( 64, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (row-major, non-contiguous, mixed sign strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - sh = [ 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 8, 8, 8, 8, -8, -4, 4, 2, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( 64, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 1, 2, 1, 2, 1, 1, 1, 1 ]; - st = [ -8, -8, 4, 4, 2, 2, 2, 2, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, bsize*2, 2, 1, 2, 1, 1, 1, 1 ]; - st = [ -bsize*16, -8, 4, 4, 2, 2, 2, 2, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, bsize*2, 1, 2, 1, 1, 1, 1 ]; - st = [ -bsize*16, -bsize*8, -4, 4, 2, 2, 2, 2, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, bsize*2, 1, 1, 1, 1, 1 ]; - st = [ -bsize*8, -bsize*8, bsize*4, 2, 2, 2, 2, 2, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, 2, bsize*2, 1, 1, 1, 1 ]; - st = [ -bsize*16, -bsize*8, bsize*4, 2, 2, 2, 2, 2, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, 2, 1, bsize*2, 1, 1, 1 ]; - st = [ -bsize*16, -bsize*8, -bsize*8, bsize*4, bsize*4, 2, 2, 2, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, 2, 1, 1, bsize*2, 2, 1 ]; - st = [ -bsize*16, -bsize*8, -bsize*8, bsize*4, bsize*4, bsize*4, 2, 2, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, 2, 1, 1, 1, bsize*2, 1 ]; - st = [ - -bsize*16, - -bsize*8, - -bsize*8, - bsize*4, - bsize*4, - bsize*4, - bsize*4, - 2, - 2 - ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, 2, 1, 1, 1, 1, bsize*2 ]; - st = [ - -bsize*16, - -bsize*8, - -bsize*8, - bsize*4, - bsize*4, - bsize*4, - bsize*4, - bsize*4, - 2 - ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (row-major, contiguous, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (row-major, contiguous, negative strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ -8, -8, -8, -4, -4, -2, -2, -1, -1 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (row-major, non-contiguous, same sign strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 16, 16, 16, 8, 8, 4, 4, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (row-major, non-contiguous, mixed sign strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 16, 16, 16, 8, -8, -4, 4, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 1, 2, 1, 2, 1, 1, 1, 1 ]; - st = [ -8, -8, 4, 4, 2, 2, 2, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, bsize*2, 2, 1, 2, 1, 1, 1, 1 ]; - st = [ -bsize*16, -8, 4, 4, 2, 2, 2, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, bsize*2, 1, 2, 1, 1, 1, 1 ]; - st = [ bsize*8, bsize*8, -4, 4, 2, 2, 2, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, bsize*2, 2, 1, 1, 1, 1 ]; - st = [ bsize*16, bsize*8, -bsize*8, 4, 2, 2, 2, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, 2, bsize*2, 1, 1, 1, 1 ]; - st = [ bsize*16, bsize*8, bsize*8, bsize*4, 2, 2, 2, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, 2, 1, bsize*2, 1, 1, 1 ]; - st = [ bsize*16, bsize*8, bsize*8, bsize*4, bsize*4, 2, 2, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, 2, 1, 1, bsize*2, 1, 1 ]; - st = [ bsize*16, bsize*8, bsize*8, bsize*4, bsize*4, bsize*4, 2, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, 2, 1, 1, 1, bsize*2, 1 ]; - st = [ - bsize*16, - bsize*8, - bsize*8, - bsize*4, - bsize*4, - bsize*4, - bsize*4, - 2, - 2 - ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (row-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - - bsize = blockSize( dt ); - sh = [ 1, 2, 1, 2, 1, 1, 1, 1, bsize*2 ]; - st = [ - bsize*16, - bsize*8, - bsize*8, - bsize*4, - bsize*4, - bsize*4, - bsize*4, - bsize*4, - 2 - ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (column-major, singleton dimensions)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 1, 1, 1, 1, 1, 1, 1, 4 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (column-major, singleton dimensions, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 1, 1, 1, 1, 1, 1, 1, 4 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (column-major, contiguous)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (column-major, contiguous, negative strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ -1, -1, -1, -1, -2, -2, -4, -4, -8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (column-major, non-contiguous, same sign strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 2, 2, 2, 2, 4, 4, 8, 8, 16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (column-major, non-contiguous, mixed sign strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 2, 2, 2, 2, 4, -4, -8, 8, 16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 1, 1, 2, 1, 2, 1, 1, bsize*2 ]; - st = [ 2, 2, 2, 2, 4, 4, -8, -8, -8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 1, 1, 2, 1, 2, 1, bsize*2, 1 ]; - st = [ 2, 2, 2, 2, -4, -4, -8, 8, bsize*16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 1, 1, 2, 1, 2, bsize*2, 1, 1 ]; - st = [ 2, 2, 2, 2, -4, -4, -8, bsize*16, bsize*16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 1, 1, 2, 1, bsize*2, 1, 2, 1 ]; - st = [ 2, 2, 2, 2, 4, -4, -bsize*8, bsize*8, bsize*16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 1, 1, 1, bsize*2, 1, 2, 2, 1 ]; - st = [ 2, 2, 2, 2, -2, bsize*4, -bsize*4, bsize*8, bsize*16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 1, 1, bsize*2, 1, 2, 1, 2, 1 ]; - st = [ 2, 2, 2, 2, -bsize*4, bsize*4, -bsize*8, bsize*8, bsize*16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 1, bsize*2, 1, 1, 2, 1, 2, 1 ]; - st = [ - 2, - 2, - 2, - bsize*4, - -bsize*4, - bsize*4, - -bsize*8, - bsize*8, - bsize*16 - ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, bsize*2, 1, 1, 1, 2, 1, 2, 1 ]; - st = [ - 2, - 2, - bsize*4, - bsize*4, - -bsize*4, - bsize*4, - -bsize*8, - bsize*8, - bsize*16 - ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 1, 1, 1, 2, 1, 2, 1, 1 ]; - st = [ - 2, - bsize*4, - bsize*4, - -bsize*4, - bsize*4, - -bsize*8, - bsize*8, - bsize*16, - bsize*16 - ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (column-major, contiguous, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - sh = [ 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( -99.0, -99.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (column-major, contiguous, negative strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - sh = [ 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ -1, -1, -1, -1, -2, -2, -4, -4, -8 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( -99.0, -99.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (column-major, non-contiguous, same sign strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - sh = [ 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 2, 2, 2, 2, 4, 4, 8, 8, 16 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( 64, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (column-major, non-contiguous, mixed sign strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - sh = [ 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 2, 2, 2, 2, 4, -4, -8, 8, 16 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( 64, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 1, 2, 1, 2, 1, 1, 1, 1 ]; - st = [ - 2, - -bsize*4, - -bsize*4, - -bsize*8, - bsize*8, - bsize*16, - bsize*16, - bsize*16, - bsize*16 - ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, bsize*2, 1, 1, 2, 1, 1, 1, 1 ]; - st = [ - 2, - 4, - -bsize*8, - -bsize*8, - bsize*8, - bsize*16, - bsize*16, - bsize*16, - bsize*16 - ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, bsize*2, 1, 2, 1, 1, 1, 1 ]; - st = [ - 2, - 4, - -4, - -bsize*8, - bsize*8, - bsize*16, - bsize*16, - bsize*16, - bsize*16 - ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, bsize*4, 1, 1, 1, 1, 1 ]; - st = [ - 2, - 4, - -4, - -8, - bsize*32, - bsize*32, - bsize*32, - bsize*32, - bsize*32 - ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, bsize*2, 1, 1, 1, 1 ]; - st = [ - 2, - 4, - -4, - -8, - 8, - bsize*16, - bsize*16, - bsize*16, - bsize*16 - ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, 1, bsize*2, 1, 1, 1 ]; - st = [ 2, 4, -4, -8, 8, 8, bsize*16, bsize*16, bsize*16 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, 1, 1, bsize*2, 1, 1 ]; - st = [ 2, 4, -4, -8, 8, 8, 8, bsize*16, bsize*16 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, 1, 1, 1, bsize*2, 1 ]; - st = [ 2, 4, -4, -8, 8, 8, 8, 8, bsize*16 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, complex)', function test( t ) { - var actual; - var bsize; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 2, 1, 2, 1, 1, 1, 1, 1, bsize*2 ]; - st = [ 2, 4, -4, -8, 8, 8, 8, 8, 8 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*4, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (column-major, contiguous, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (column-major, contiguous, negative strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ -1, -1, -1, -1, -2, -2, -4, -4, -8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (column-major, non-contiguous, same sign strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 2, 2, 2, 2, 4, 4, 8, 8, 16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (column-major, non-contiguous, mixed sign strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 2, 2, 2, 2, -4, -4, 8, 8, 16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 1, 1, 1, 2, 1, 2, 1, bsize*2 ]; - st = [ 2, 2, 2, 2, 2, 4, -4, -8, 8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 1, 1, 1, 2, 1, 2, bsize*2, 1 ]; - st = [ 2, 2, 2, 2, 2, 4, -4, -8, bsize*16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 1, 1, 1, 2, 1, bsize*2, 1, 2 ]; - st = [ 2, 2, 2, 2, 2, 4, -4, -bsize*8, bsize*8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 1, 1, 1, 1, bsize*2, 1, 2, 2 ]; - st = [ 2, 2, 2, 2, 2, -2, bsize*4, -bsize*4, bsize*8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 1, 1, 1, bsize*2, 1, 2, 1, 2 ]; - st = [ 2, 2, 2, 2, 2, -bsize*4, bsize*4, -bsize*8, bsize*8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 1, 1, bsize*2, 1, 2, 1, 2, 1 ]; - st = [ 2, 2, 2, 2, bsize*4, -bsize*4, bsize*8, -bsize*8, bsize*16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, 1, bsize*2, 1, 1, 2, 1, 2, 1 ]; - st = [ 2, 2, 2, bsize*4, bsize*4, -bsize*4, bsize*8, -bsize*8, bsize*16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ 1, bsize*2, 1, 1, 1, 2, 1, 2, 1 ]; - st = [ 2, 2, bsize*4, bsize*4, bsize*4, -bsize*4, bsize*8, -bsize*8, bsize*16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a 9-dimensional ndarray contains a specified value (column-major, non-contiguous, large arrays, accessors)', function test( t ) { - var actual; - var bsize; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - - bsize = blockSize( dt ); - sh = [ bsize*2, 1, 1, 1, 1, 2, 1, 2, 1 ]; - st = [ 2, bsize*4, bsize*4, bsize*4, bsize*4, -bsize*4, bsize*8, -bsize*8, bsize*16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); diff --git a/test/test.js b/test/test.js deleted file mode 100644 index 04f1d7e..0000000 --- a/test/test.js +++ /dev/null @@ -1,52 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var oneTo = require( '@stdlib/array-one-to' ); -var scalar2ndarray = require( '@stdlib/ndarray-from-scalar' ); -var ndarray = require( '@stdlib/ndarray-ctor' ); -var includes = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof includes, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'the function returns `false` if the input is an empty ndarray', function test( t ) { - var actual; - var x; - var v; - - x = ndarray( 'float64', oneTo( 8, 'float64' ), [ 0 ], [ 1 ], 0, 'row-major' ); - - v = scalar2ndarray( 1.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - t.end(); -}); diff --git a/test/test.nd.js b/test/test.nd.js deleted file mode 100644 index 2313850..0000000 --- a/test/test.nd.js +++ /dev/null @@ -1,982 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2025 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var oneTo = require( '@stdlib/array-one-to' ); -var scalar2ndarray = require( '@stdlib/ndarray-from-scalar' ); -var numel = require( '@stdlib/ndarray-base-numel' ); -var shape2strides = require( '@stdlib/ndarray-base-shape2strides' ); -var strides2offset = require( '@stdlib/ndarray-base-strides2offset' ); -var ndarray = require( '@stdlib/ndarray-ctor' ); -var includes = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof includes, 'function', 'main export is a function'); - t.end(); -}); - -tape( 'the function tests whether a n-dimensional ndarray contains a specified value (row-major, singleton dimensions)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a n-dimensional ndarray contains a specified value (row-major, singleton dimensions, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a n-dimensional ndarray contains a specified value (row-major, contiguous)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a n-dimensional ndarray contains a specified value (row-major, contiguous, negative strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ -8, -8, -8, -8, -8, -4, -4, -2, -2, -1, -1 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a n-dimensional ndarray contains a specified value (row-major, non-contiguous, same sign strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 8, 8, 8, 8, 8, 8, 8, 4, 4, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a n-dimensional ndarray contains a specified value (row-major, non-contiguous, mixed sign strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 8, 8, 8, 8, 8, 8, 8, 4, 4, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a n-dimensional ndarray contains a specified value (row-major, contiguous, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - sh = [ 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( -99.0, -99.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a n-dimensional ndarray contains a specified value (row-major, contiguous, negative strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - sh = [ 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ -4, -4, -4, -4, -4, -4, -4, -2, -2, -1, -1 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( -99.0, -99.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a n-dimensional ndarray contains a specified value (row-major, non-contiguous, same sign strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - sh = [ 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 8, 8, 8, 8, 8, 8, 8, 4, 4, 2, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( 64, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a n-dimensional ndarray contains a specified value (row-major, non-contiguous, mixed sign strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'row-major'; - sh = [ 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 8, 8, 8, 8, 8, 8, -8, -4, 4, 2, 2 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( 64, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a n-dimensional ndarray contains a specified value (row-major, contiguous, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a n-dimensional ndarray contains a specified value (row-major, contiguous, negative strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ -8, -8, -8, -8, -8, -4, -4, -2, -2, -1, -1 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a n-dimensional ndarray contains a specified value (row-major, non-contiguous, same sign strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 1 ]; - st = [ 16, 16, 16, 16, 8, 8, 4, 4, 2, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a n-dimensional ndarray contains a specified value (row-major, non-contiguous, mixed sign strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'row-major'; - sh = [ 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 1 ]; - st = [ 16, 16, 16, 16, 8, -8, -4, 4, 2, 2, 2 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a n-dimensional ndarray contains a specified value (column-major, singleton dimensions)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a n-dimensional ndarray contains a specified value (column-major, singleton dimensions, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a n-dimensional ndarray contains a specified value (column-major, contiguous)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a n-dimensional ndarray contains a specified value (column-major, contiguous, negative strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ -1, -1, -1, -1, -1, -1, -2, -2, -4, -4, -8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a n-dimensional ndarray contains a specified value (column-major, non-contiguous, same sign strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 2, 2, 2, 2, 2, 2, 4, 4, 8, 8, 16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, oneTo( numel( sh )*4, dt ), sh, st, o, ord ); - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a n-dimensional ndarray contains a specified value (column-major, non-contiguous, mixed sign strides)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 2, 2, 2, 2, 2, 2, 4, -4, -8, 8, 16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a n-dimensional ndarray contains a specified value (column-major, contiguous, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - sh = [ 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( -99.0, -99.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a n-dimensional ndarray contains a specified value (column-major, contiguous, negative strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - sh = [ 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ -1, -1, -1, -1, -1, -1, -2, -2, -4, -4, -8 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( numel( sh )*2, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( -99.0, -99.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a n-dimensional ndarray contains a specified value (column-major, non-contiguous, same sign strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - sh = [ 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 2, 2, 2, 2, 2, 2, 4, 4, 8, 8, 16 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( 64, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a n-dimensional ndarray contains a specified value (column-major, non-contiguous, mixed sign strides, complex)', function test( t ) { - var actual; - var xbuf; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'complex128'; - ord = 'column-major'; - sh = [ 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 2, 2, 2, 2, 2, 2, 4, -4, -8, 8, 16 ]; - o = strides2offset( sh, st ); - xbuf = oneTo( 64, 'float64' ); - - x = ndarray( dt, new Complex128Array( xbuf ), sh, st, o, ord ); - - v = scalar2ndarray( new Complex128( 3.0, 4.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( new Complex128( 5.0, 6.0 ), { - 'dtype': 'complex128' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a n-dimensional ndarray contains a specified value (column-major, contiguous, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = shape2strides( sh, ord ); - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a n-dimensional ndarray contains a specified value (column-major, contiguous, negative strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ -1, -1, -1, -1, -1, -1, -2, -2, -4, -4, -8 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh ), dt ) ), sh, st, o, ord ); - - v = scalar2ndarray( -99.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a n-dimensional ndarray contains a specified value (column-major, non-contiguous, same sign strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 2, 2, 2, 2, 2, 2, 4, 4, 8, 8, 16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function tests whether a n-dimensional ndarray contains a specified value (column-major, non-contiguous, mixed sign strides, accessors)', function test( t ) { - var actual; - var ord; - var sh; - var st; - var dt; - var o; - var x; - var v; - - dt = 'float64'; - ord = 'column-major'; - sh = [ 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1 ]; - st = [ 2, 2, 2, 2, 2, 2, -4, -4, 8, 8, 16 ]; - o = strides2offset( sh, st ); - - x = ndarray( dt, toAccessorArray( oneTo( numel( sh )*4, dt ) ), sh, st, o, ord ); // eslint-disable-line max-len - - v = scalar2ndarray( 4.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, false, 'returns expected value' ); - - v = scalar2ndarray( 3.0, { - 'dtype': 'float64' - }); - actual = includes( [ x, v ] ); - t.strictEqual( actual, true, 'returns expected value' ); - - t.end(); -});