120 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			120 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
 | |
| {{alias}}( table )
 | |
|     Returns a function which dispatches to specified functions based on input
 | |
|     argument types.
 | |
| 
 | |
|     A `table` resolution object may contain one or more of the following fields:
 | |
| 
 | |
|     - scalar: strided look-up table for scalar arguments.
 | |
|     - array: strided look-up table for array-like object arguments.
 | |
|     - ndarray: strided look-up table for ndarray arguments.
 | |
| 
 | |
|     Each strided look-up table should be comprised as follows:
 | |
| 
 | |
|       [ <dtype>, <fcn>, <dtype>, <fcn>, ... ]
 | |
| 
 | |
|     If an argument's data type is *not* found in the argument's corresponding
 | |
|     look-up table and if a 'generic' data type is present in that same table,
 | |
|     the returned dispatch function will resolve the "generic" implementation. In
 | |
|     other words, an implementation associated with a 'generic' data type will be
 | |
|     treated as the default implementation.
 | |
| 
 | |
|     If unable to resolve an implementation for a provided argument data type,
 | |
|     the returned function throws an error.
 | |
| 
 | |
|     If provided a number, the returned function returns a number.
 | |
| 
 | |
|     If provided an ndarray or array-like object, the returned function performs
 | |
|     element-wise computation.
 | |
| 
 | |
|     If provided an array-like object, the returned function returns an array-
 | |
|     like object having the same length and data type as the provided input
 | |
|     argument.
 | |
| 
 | |
|     If provided an ndarray, the returned function returns an ndarray having the
 | |
|     same shape and data type as the provided input argument.
 | |
| 
 | |
|     Parameters
 | |
|     ----------
 | |
|     table: Object
 | |
|         Table resolution object.
 | |
| 
 | |
|     table.scalar: ArrayLikeObject (optional)
 | |
|         Strided look-up table for scalar arguments. Supported data types:
 | |
|         'number' and 'complex'.
 | |
| 
 | |
|     table.array: ArrayLikeObject (optional)
 | |
|         Strided look-up table for array-like object arguments. Implementation
 | |
|         functions must follow strided array interface argument conventions:
 | |
| 
 | |
|           fcn( N, x, strideX, y, strideY )
 | |
| 
 | |
|         where
 | |
| 
 | |
|         - N: number of indexed elements.
 | |
|         - x: input strided array.
 | |
|         - strideX: index increment for `x`.
 | |
|         - y: destination strided array.
 | |
|         - strideY: index increment for `y`.
 | |
| 
 | |
|         Supported array data types consist of all supported ndarray data types.
 | |
| 
 | |
|     table.ndarray: ArrayLikeObject (optional)
 | |
|         Strided look-up table for ndarray arguments. Implementation functions
 | |
|         must follow strided array ndarray interface argument conventions:
 | |
| 
 | |
|         fcn( N, x, strideX, offsetX, y, strideY, offsetY )
 | |
| 
 | |
|         where
 | |
| 
 | |
|         - N: number of indexed elements.
 | |
|         - x: input strided array (i.e., underlying input ndarray buffer).
 | |
|         - strideX: index increment for `x`.
 | |
|         - offsetX: starting index for `x`.
 | |
|         - y: destination strided array (i.e., underlying output ndarray buffer).
 | |
|         - strideY: index increment for `y`.
 | |
|         - offsetY: starting index for `y`.
 | |
| 
 | |
|         Supported data types consist of all supported ndarray data types.
 | |
| 
 | |
|     Returns
 | |
|     -------
 | |
|     fcn: Function
 | |
|         Dispatch function.
 | |
| 
 | |
|     Examples
 | |
|     --------
 | |
|     > var t = {};
 | |
|     > t.scalar = [ 'number', {{alias:@stdlib/math/base/special/abs}} ];
 | |
|     > t.array = [
 | |
|     ...    'float64', {{alias:@stdlib/math/strided/special/dabs}},
 | |
|     ...    'float32', {{alias:@stdlib/math/strided/special/sabs}},
 | |
|     ...    'generic', {{alias:@stdlib/math/strided/special/abs}}
 | |
|     ... ];
 | |
|     > t.ndarray = [
 | |
|     ...    'float64', {{alias:@stdlib/math/strided/special/dabs}}.ndarray,
 | |
|     ...    'float32', {{alias:@stdlib/math/strided/special/sabs}}.ndarray,
 | |
|     ...    'generic', {{alias:@stdlib/math/strided/special/abs}}.ndarray
 | |
|     ... ];
 | |
|     > var fcn = {{alias}}( t );
 | |
| 
 | |
|     // Provide a number:
 | |
|     > var y = fcn( -1.0 )
 | |
|     1.0
 | |
| 
 | |
|     // Provide an array-like object:
 | |
|     > var x = new {{alias:@stdlib/array/float64}}( [ -1.0, -2.0 ] );
 | |
|     > y = fcn( x )
 | |
|     <Float64Array>[ 1.0, 2.0 ]
 | |
| 
 | |
|     // Provide an ndarray:
 | |
|     > x = {{alias:@stdlib/ndarray/array}}( [ [ -1.0, -2.0 ], [ -3.0, -4.0 ] ] );
 | |
|     > y = fcn( x )
 | |
|     <ndarray>
 | |
|     > y.get( 0, 1 )
 | |
|     2.0
 | |
| 
 | |
|     See Also
 | |
|     --------
 | |
| 
 |