# Kernel Tangent > Compute the [tangent][tangent] of a number on `[-π/4, π/4]`.
## Usage ```javascript var kernelTan = require( '@stdlib/math/base/special/kernel-tan' ); ``` #### kernelTan( x, y, k ) Computes the [tangent][tangent] of a `number` on `[-π/4, π/4]`. For increased accuracy, the number for which the [tangent][tangent] should be evaluated can be supplied as a [double-double number][double-double-arithmetic] (i.e., a non-evaluated sum of two [double-precision floating-point numbers][ieee754] `x` and `y`). ```javascript var out = kernelTan( 3.141592653589793/4.0, 0.0, 1 ); // returns ~1.0 out = kernelTan( 3.141592653589793/6.0, 0.0, 1 ); // returns ~0.577 out = kernelTan( 0.664, 5.288e-17, 1 ); // returns ~0.783 ``` If `k = 1`, the function returns `tan(x+y)`. To return the negative inverse `-1/tan(x+y)`, set `k = -1`. ```javascript var out = kernelTan( 3.141592653589793/4.0, 0.0, -1 ); // returns ~-1.0 ``` If either `x` or `y` is `NaN`, the function returns `NaN`. ```javascript var out = kernelTan( NaN, 0.0, 1 ); // returns NaN out = kernelTan( 3.0, NaN, 1 ); // returns NaN out = kernelTan( NaN, NaN, 1 ); // returns NaN ```
## Notes - As components of a [double-double number][double-double-arithmetic], the two [double-precision floating-point numbers][ieee754] `x` and `y` must satisfy
Inequality for the two components of a double-double number.
where `ulp` stands for [units in the last place][ulp].
## Examples ```javascript var linspace = require( '@stdlib/array/linspace' ); var binomial = require( '@stdlib/random/base/binomial' ).factory; var PI = require( '@stdlib/constants/float64/pi' ); var kernelTan = require( '@stdlib/math/base/special/kernel-tan' ); var x = linspace( -PI/4.0, PI/4.0, 100 ); var rbinom = binomial( 1, 0.5 ); var descr; var i; var k; for ( i = 0; i < x.length; i++ ) { k = rbinom(); descr = ( k === 1 ) ? 'tan(%d) = %d' : '-1/tan(%d) = %d'; console.log( descr, x[ i ], kernelTan( x[ i ], 0.0, k ) ); } ```