mirror of
https://github.com/lcn2/calc.git
synced 2025-08-16 01:03:29 +03:00
Added complex multiple approximation function to commath.c so that users of libcalc may directly round complex number to nearest multiple of a given real number: E_FUNC COMPLEX *cmappr(COMPLEX *c, NUMBER *e, long rnd, bool cfree); For example: COMPLEX *c; /* complex number to round to nearest epsilon */ NUMBER *eps; /* epsilon rounding precision */ COMPLEX *res; /* c rounded to nearest epsilon */ long rnd = 24L; /* a common rounding mode */ bool ok_to_free; /* true ==> free c, false ==> do not free c */ ... res = cmappr(c, eps, ok_to_free); The complex trigonometric functions tan, cot, sec, csc were implemented in func.c as calls to complex sin and complex cos. We added the direct calls to comfunc.c so that users of libcalc may call them directly: E_FUNC COMPLEX *c_tan(COMPLEX *c, NUMBER *eps); E_FUNC COMPLEX *c_cot(COMPLEX *c, NUMBER *eps); E_FUNC COMPLEX *c_sec(COMPLEX *c, NUMBER *eps); E_FUNC COMPLEX *c_cot(COMPLEX *c, NUMBER *eps);
70 lines
2.1 KiB
Plaintext
70 lines
2.1 KiB
Plaintext
NAME
|
|
sec - trigonometric secant
|
|
|
|
SYNOPSIS
|
|
sec(x [,eps])
|
|
|
|
TYPES
|
|
x number (real or complex)
|
|
eps 0 < real < 1, defaults to epsilon()
|
|
|
|
return real
|
|
|
|
DESCRIPTION
|
|
Calculate the secant of x to a multiple of eps, with error less
|
|
in absolute value than .75 * eps.
|
|
|
|
This function is equivalent to:
|
|
|
|
sec(x) = 1 / cos(x)
|
|
|
|
EXAMPLE
|
|
; print sec(1, 1e-5), sec(1, 1e-10), sec(1, 1e-15), sec(1, 1e-20)
|
|
1.85082 1.8508157177 1.850815717680926 1.85081571768092561791
|
|
|
|
; print sec(2 + 3i, 1e-5), sec(2 + 3i, 1e-10)
|
|
~-0.04167497639869547021+~0.09061109101765280898i ~-0.04167496441100888150+~0.09061113719571288336i
|
|
|
|
; pi = pi(1e-20)
|
|
; print 1e-10), sec(pi/6, 1e-10), sec(pi/3, 1e-10), sec(pi, 1e-10)
|
|
1.1547005384 2 -1
|
|
|
|
; print sec(1/2), sec(5/7), sec(42/7)
|
|
1.13949392732454912231 1.3235192673191814545 1.04148192659510767648
|
|
|
|
LIMITS
|
|
0 < eps < 1
|
|
|
|
LINK LIBRARY
|
|
NUMBER *qsec(NUMBER *x, NUMBER *eps)
|
|
COMPLEX *c_sec(COMPLEX *c, NUMBER *eps)
|
|
|
|
SEE ALSO
|
|
sin, cos, tan, cot, csc
|
|
asin, acos, atan, acot, asec, acsc
|
|
versin, coversin, vercos, avercos
|
|
aversin, acoversin, covercos, acovercos
|
|
epsilon
|
|
|
|
## Copyright (C) 1999,2023 Landon Curt Noll
|
|
##
|
|
## Calc is open software; you can redistribute it and/or modify it under
|
|
## the terms of the version 2.1 of the GNU Lesser General Public License
|
|
## as published by the Free Software Foundation.
|
|
##
|
|
## Calc is distributed in the hope that it will be useful, but WITHOUT
|
|
## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
|
## or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
|
|
## Public License for more details.
|
|
##
|
|
## A copy of version 2.1 of the GNU Lesser General Public License is
|
|
## distributed with calc under the filename COPYING-LGPL. You should have
|
|
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
|
## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
##
|
|
## Under source code control: 1995/11/13 03:49:00
|
|
## File existed as early as: 1995
|
|
##
|
|
## chongo <was here> /\oo/\ http://www.isthe.com/chongo/
|
|
## Share and enjoy! :-) http://www.isthe.com/chongo/tech/comp/calc/
|