Main Content

cordicsinhcosh

CORDIC-based approximation of hyperbolic sine and cosine

Since R2023b

Description

[S,C] = cordicsinhcosh(X) returns the hyperbolic sine (sinh) S and hyperbolic cosine (cosh) C of the elements in X using a CORDIC-based approximation. The cordicsinhcosh function operates element-wise on arrays. All angles are in radians. The function uses the maximum number of CORDIC iterations for the numeric type of X.

example

[S,C] = cordicsinhcosh(X,N) additionally specifies the maximum shift value N in the CORDIC iterations. For fixed-point input X, the maximum shift value is limited by the word length minus one.

example

Examples

collapse all

theta = fi(pi/4);
[s,c] = cordicsinhcosh(theta)
s = 
    0.8688

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 16
        FractionLength: 14
c = 
    1.3248

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 16
        FractionLength: 14

Compute the hyperbolic cosine of a double using a CORDIC-based approximation and specify the number of iterations the CORDIC kernel should perform. Plot the CORDIC approximation of the hyperbolic cosine with varying numbers of iterations.

x = -1:0.01:1;
for n = 5:5:20
    [s,c] = cordicsinhcosh(x,n);
    plot(x,c);
    hold on;
end
legend('n = 5','n = 10','n = 15','n = 20')

Input Arguments

collapse all

Input angles in radians, specified as a scalar, vector, matrix, or multidimensional array. X must be a double, single, fixed-point fi, or scaled-double fi. If X is a fixed-point fi or scaled-double fi, then X must be signed and binary-point scaled.

If X is double or single, then S and C are double or single, respectively.

Data Types: single | double | fi

Maximum shift value in CORDIC iterations, specified as a real integer-valued scalar.

Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fi

Output Arguments

collapse all

Hyperbolic sine (sinh), returned as a scalar, vector, matrix, or multidimensional array.

If X is double or single, then S and C are double or single, respectively.

If X is a fixed-point fi or scaled-double fi, then S and C have the same word length as X and fraction length equal to two less than the word length.

Hyperbolic cosine (cosh), returned as a scalar, vector, matrix, or multidimensional array.

If X is double or single, then S and C are double or single, respectively.

If X is a fixed-point fi or scaled-double fi, then S and C have the same word length as X and fraction length equal to two less than the word length.

Limitations

  • The cordicsinhcosh function returns an error if X is outside the domain of convergence for the CORDIC hyperbolic sine and cosine kernel. The domain of convergence is a function of the numeric type of X and the maximum CORDIC shift value n. The domain of convergence converges to around [-1.1182, +1.1182]. You can use the fixed.cordic.hyperbolic.domainOfConvergence function to compute the domain of convergence for a particular X and n.

Algorithms

collapse all

References

[1] Volder, Jack E. “The CORDIC Trigonometric Computing Technique.” IRE Transactions on Electronic Computers. EC-8, no. 3 (Sept. 1959): 330–334.

[2] Andraka, Ray. “A Survey of CORDIC Algorithm for FPGA Based Computers.” In Proceedings of the 1998 ACM/SIGDA Sixth International Symposium on Field Programmable Gate Arrays, 191–200. https://dl.acm.org/doi/10.1145/275107.275139.

[3] Walther, J.S. “A Unified Algorithm for Elementary Functions.” In Proceedings of the May 18-20, 1971 Spring Joint Computer Conference, 379–386. https://dl.acm.org/doi/10.1145/1478786.1478840.

[4] Schelin, Charles W. “Calculator Function Approximation.” The American Mathematical Monthly, no. 5 (May 1983): 317–325. https://doi.org/10.2307/2975781.

Extended Capabilities

expand all

Version History

Introduced in R2023b