npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@stdlib/ndarray-input-casting-policies

v0.1.1

Published

List of input ndarray casting policies.

Readme

Policies

NPM version Build Status Coverage Status

List of input ndarray casting policies.

Installation

npm install @stdlib/ndarray-input-casting-policies

Usage

var policies = require( '@stdlib/ndarray-input-casting-policies' );

policies()

Returns a list of input ndarray casting policies.

var out = policies();
// e.g., returns [ 'none', 'promoted', ... ]

The output array contains the following policies:

  • none: no guidance on specific casting behavior. An input ndarray may or may not be cast depending on the needs of an implementation.
  • promoted: cast an input ndarray to a promoted data type.
  • accumulation: cast an input ndarray to a data type amenable to accumulation.
  • output: cast an input ndarray to the data type of the output ndarray.

Notes

  • The following is some general guidance for the casting policies listed above:

    • none: applies whenever an input ndarray casting behavior should be entirely left up to an implementation. For example, an implementation may choose to cast internally in order to take advantage of specialized algorithms operating on specific data types.
    • promoted: applies whenever an input ndarray should be cast to the data type resolved from applying the rules of type promotion to an implementation's input and output ndarrays. For example, suppose an implementation is computing the sum and the data type of the input ndarray is int32 and the data type of the output ndarray is float32. In this scenario, casting int32 to float32 is not desirable as not all int32 values can be safely represented in float32, thus potentially leading to significant accumulated numerical error. Instead, we can promote int32 to float64, compute the sum, and then downcast the result for more accurate summation.
    • accumulation: applies whenever an input ndarray should be cast to a data type amenable to accumulation, irrespective of the output ndarray or other input ndarrays. For example, suppose an implementation is computing the sum and determining whether the sum passes a threshold, and further suppose that the data type of the input ndarray is int8 and the data type of the output ndarray is bool. In this scenario, as int8 has a small range of values, computing the sum has a high risk of overflow, rendering the results potentially meaningless, and type promotion is not applicable. As such, an implementation may prefer to internally cast int8 to a data type more amenable to accumulation, such as int32.
    • output: applies whenever an input ndarray should always be cast to the data type of the output ndarray. This might apply when an implementation wraps a type homogeneous interface, such as those commonly found in BLAS/LAPACK routines.
  • Whether an implementation supports a casting policy depends on the implementation. Supporting casting policies is mainly envisioned for generalized utilities wrapping lower-level APIs and needing to accommodate varied use cases (e.g., @stdlib/ndarray-base/unary-reduce-strided1d-dispatch). Exposing casting policies as part of user-facing APIs is generally not a good idea.

Examples

var indexOf = require( '@stdlib/utils-index-of' );
var policies = require( '@stdlib/ndarray-input-casting-policies' );

var POLICIES = policies();

function isPolicy( str ) {
    if ( indexOf( POLICIES, str ) === -1 ) {
        return false;
    }
    return true;
}

var bool = isPolicy( 'none' );
// returns true

bool = isPolicy( 'output' );
// returns true

bool = isPolicy( 'promoted' );
// returns true

bool = isPolicy( 'beep' );
// returns false

Notice

This package is part of 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.

For more information on the project, filing bug reports and feature requests, and guidance on how to develop stdlib, see the main project repository.

Community

Chat


License

See LICENSE.

Copyright

Copyright © 2016-2026. The Stdlib Authors.