# binary > C APIs for registering a Node-API module exporting interfaces for invoking binary numerical functions.
## Usage ```javascript var headerDir = require( '@stdlib/math/base/napi/binary' ); ``` #### headerDir Absolute file path for the directory containing header files for C APIs. ```javascript var dir = headerDir; // returns ```
## Examples ```javascript var headerDir = require( '@stdlib/math/base/napi/binary' ); console.log( headerDir ); // => ```
* * *
## C APIs
### Usage ```c #include "stdlib/math/base/napi/binary.h" ``` #### stdlib_math_base_napi_dd_d( env, info, fcn ) Invokes a binary function accepting and returning double-precision floating-point numbers. ```c #include // ... static double add( const double x, const double y ) { return x + y; } // ... /** * Receives JavaScript callback invocation data. * * @param env environment under which the function is invoked * @param info callback data * @return Node-API value */ napi_value addon( napi_env env, napi_callback_info info ) { return stdlib_math_base_napi_dd_d( env, info, add ); } // ... ``` The function accepts the following arguments: - **env**: `[in] napi_env` environment under which the function is invoked. - **info**: `[in] napi_callback_info` callback data. - **fcn**: `[in] double (*fcn)( double, double )` binary function. ```c void stdlib_math_base_napi_dd_d( napi_env env, napi_callback_info info, double (*fcn)( double, double ) ); ``` #### stdlib_math_base_napi_ff_f( env, info, fcn ) Invokes a binary function accepting and returning single-precision floating-point numbers. ```c #include // ... static float addf( const float x, const float y ) { return x + y; } // ... /** * Receives JavaScript callback invocation data. * * @param env environment under which the function is invoked * @param info callback data * @return Node-API value */ napi_value addon( napi_env env, napi_callback_info info ) { return stdlib_math_base_napi_ff_f( env, info, addf ); } // ... ``` The function accepts the following arguments: - **env**: `[in] napi_env` environment under which the function is invoked. - **info**: `[in] napi_callback_info` callback data. - **fcn**: `[in] float (*fcn)( float, float )` binary function. ```c void stdlib_math_base_napi_ff_f( napi_env env, napi_callback_info info, float (*fcn)( float, float ) ); ``` #### STDLIB_MATH_BASE_NAPI_MODULE_DD_D( fcn ) Macro for registering a Node-API module exporting an interface for invoking a binary function accepting and returning double-precision floating-point numbers. ```c static double add( const double x, const double y ) { return x + y; } // ... // Register a Node-API module: STDLIB_MATH_BASE_NAPI_MODULE_DD_D( add ); ``` The macro expects the following arguments: - **fcn**: `double (*fcn)( double, double )` binary function. When used, this macro should be used **instead of** `NAPI_MODULE`. The macro includes `NAPI_MODULE`, thus ensuring Node-API module registration. #### STDLIB_MATH_BASE_NAPI_MODULE_FF_F( fcn ) Macro for registering a Node-API module exporting an interface for invoking a binary function accepting and returning single-precision floating-point numbers. ```c static float addf( const float x, const float y ) { return x + y; } // ... // Register a Node-API module: STDLIB_MATH_BASE_NAPI_MODULE_FF_F( addf ); ``` The macro expects the following arguments: - **fcn**: `float (*fcn)( float, float )` binary function. When used, this macro should be used **instead of** `NAPI_MODULE`. The macro includes `NAPI_MODULE`, thus ensuring Node-API module registration.
### Notes - The C-API functions expect that the callback `info` argument provides access to the following JavaScript arguments: - `x`: input value. - `y`: input value.