add exterior trigonometric functions

Added the following new trigonometric functions:

    exsec(x [,eps])		exterior trigonometric secant
    aexsec(x [,eps])		inverse exterior trigonometric secant
    excsc(x [,eps])		exterior trigonometric cosecant
    aexcsc(x [,eps])		inverse exterior trigonometric cosecant

Added to test 95dd and test9500.trigeq.cal to the calc regression test
suite to perform extensive test of trigonometric functions.

Added to test 34dd, some if the missing inverse trigonometric tests.
This commit is contained in:
Landon Curt Noll
2023-10-01 23:12:21 -07:00
parent 5d62e58704
commit c78a893862
41 changed files with 1693 additions and 237 deletions

View File

@@ -53,6 +53,7 @@ SEE ALSO
aversin, acoversin, avercos, acovercos
haversin, hacoversin, havercos, hacovercos
ahaversin, hacoversin, havercos, ahacovercos
exsec, aexsec, excsc, aexcsc
epsilon
## Copyright (C) 1999,2023 Landon Curt Noll

View File

@@ -53,6 +53,7 @@ SEE ALSO
aversin, acoversin, avercos, acovercos
haversin, hacoversin, havercos, hacovercos
ahaversin, hacoversin, havercos, ahacovercos
exsec, aexsec, excsc, aexcsc
epsilon
## Copyright (C) 1999,2021,2023 Landon Curt Noll

View File

@@ -52,6 +52,7 @@ SEE ALSO
aversin, acoversin, avercos
haversin, hacoversin, havercos, hacovercos
ahaversin, hacoversin, havercos, ahacovercos
exsec, aexsec, excsc, aexcsc
epsilon
## Copyright (C) 2023 Landon Curt Noll

View File

@@ -52,6 +52,7 @@ SEE ALSO
aversin, avercos, acovercos
haversin, hacoversin, havercos, hacovercos
ahaversin, hacoversin, havercos, ahacovercos
exsec, aexsec, excsc, aexcsc
epsilon
## Copyright (C) 2023 Landon Curt Noll

View File

@@ -56,6 +56,7 @@ SEE ALSO
aversin, acoversin, avercos, acovercos
haversin, hacoversin, havercos, hacovercos
ahaversin, hacoversin, havercos, ahacovercos
exsec, aexsec, excsc, aexcsc
epsilon
## Copyright (C) 1999,2021,2023 Landon Curt Noll

84
help/aexcsc Normal file
View File

@@ -0,0 +1,84 @@
NAME
aexcsc - inverse exterior trigonometric cosecant
SYNOPSIS
aexcsc(x [,eps])
TYPES
x number (real or complex)
eps 0 < real < 1, defaults to epsilon()
return real
DESCRIPTION
Returns the inverse exterior trigonometric cscant of x to a multiple of eps with error less in
absolute value than .75 * eps.
This function is sometimes called arcexcsc, is equivalent to:
aexcsc(x) = acsc(x + 1)
EXAMPLE
; print aexcsc(0), aexcsc(0.5), aexcsc(1)
1.57079632679489661923 0.72972765622696636345 0.52359877559829887308
; print aexcsc(-0.5), aexcsc(-1)
1.57079632679489661923-1.31695789692481670863i Error 10454
; print aexcsc(.5, 1e-5), aexcsc(.5, 1e-10), aexcsc(.5, 1e-15)
0.72973 0.7297276562 0.729727656226966
; print aexcsc(.5, 1e-20)
0.72972765622696636345
; print aexcsc(5), aexcsc(5i)
0.16744807921968933055 0.03777750167037411869-0.19127650074191792629i
; print aexcsc(5+5i)
0.09818639956668015454-0.08227107131216428877i
; pi = pi(1e-20)
; print aexcsc(pi/6), aexcsc(pi/3)
0.7159583700300961063 0.51033850088317613655
; print aexcsc(4*pi/3)
0.19393657131001704582
LIMITS
0 < eps < 1
LINK LIBRARY
NUMBER *qaexcsc(NUMBER *x, NUMBER *eps)
COMPLEX *c_aexcsc(COMPLEX *c, NUMBER *epsilon)
SEE ALSO
sin, cos, tan, cot, sec, csc
asin, acos, atan, acot, asec, acsc
versin, coversin, vercos, covercos
aversin, acoversin, avercos, acovercos
haversin, hacoversin, havercos, hacovercos
ahaversin, hacoversin, havercos, ahacovercos
exsec, aexsec, excsc
epsilon
## Copyright (C) 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: 2023/09/30 23:22:21
## File existed as early as: 2023
##
## chongo <was here> /\oo/\ http://www.isthe.com/chongo/
## Share and enjoy! :-) http://www.isthe.com/chongo/tech/comp/calc/

81
help/aexsec Normal file
View File

@@ -0,0 +1,81 @@
NAME
aexsec - inverse exterior trigonometric secant
SYNOPSIS
aexsec(x [,eps])
TYPES
x number (real or complex)
eps 0 < real < 1, defaults to epsilon()
return real
DESCRIPTION
Returns the inverse trigonometric secant of x to a multiple of eps with error less in
absolute value than .75 * eps.
This function is sometimes called arcexsec, is equivalent to:
aexsec(x) = asec(x + 1)
EXAMPLE
; print aexsec(0), aexsec(0.5), aexsec(1)
0 0.84106867056793025578 1.04719755119659774615
; print aexsec(-0.5), aexsec(-1)
1.31695789692481670863i Error 10453
; print aexsec(.5, 1e-5), aexsec(.5, 1e-10), aexsec(.5, 1e-15), aexsec(.5, 1e-20)
0.84107 0.8410686706 0.84106867056793 0.84106867056793025578
; print aexsec(5), aexsec(5i)
1.40334824757520728868 1.53301882512452250055+0.1912765007419179263i
; print aexsec(5+5i)
1.4726099272282164647+0.08227107131216428876i
; pi = pi(1e-20)
; print aexsec(pi/6), aexsec(pi/3)
0.85483795676480051293 1.06045782591172048268
; print aexsec(4*pi/3)
1.37685975548487957341
LIMITS
0 < eps < 1
LINK LIBRARY
NUMBER *qaexsec(NUMBER *x, NUMBER *eps)
COMPLEX *c_aexsec(COMPLEX *c, NUMBER *epsilon)
SEE ALSO
sin, cos, tan, cot, sec, csc
asin, acos, atan, acot, asec, acsc
versin, coversin, vercos, covercos
aversin, acoversin, avercos, acovercos
haversin, hacoversin, havercos, hacovercos
ahaversin, hacoversin, havercos, ahacovercos
exsec, excsc, aexcsc
epsilon
## Copyright (C) 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: 2023/10/01 00:20:20
## File existed as early as: 2023
##
## chongo <was here> /\oo/\ http://www.isthe.com/chongo/
## Share and enjoy! :-) http://www.isthe.com/chongo/tech/comp/calc/

View File

@@ -55,6 +55,7 @@ SEE ALSO
aversin, acoversin, avercos, acovercos
haversin, hacoversin, havercos, hacovercos
ahaversin, hacoversin, havercos
exsec, aexsec, excsc, aexcsc
epsilon
## Copyright (C) 2023 Landon Curt Noll

View File

@@ -55,6 +55,7 @@ SEE ALSO
aversin, acoversin, avercos, acovercos
haversin, hacoversin, havercos, hacovercos
ahaversin, havercos, ahacovercos
exsec, aexsec, excsc, aexcsc
epsilon
## Copyright (C) 2023 Landon Curt Noll

View File

@@ -56,6 +56,7 @@ SEE ALSO
aversin, acoversin, avercos, acovercos
haversin, hacoversin, havercos, hacovercos
ahaversin, hacoversin, ahacovercos
exsec, aexsec, excsc, aexcsc
epsilon
## Copyright (C) 2023 Landon Curt Noll

View File

@@ -56,6 +56,7 @@ SEE ALSO
aversin, acoversin, avercos, acovercos
haversin, hacoversin, havercos, hacovercos
hacoversin, havercos, ahacovercos
exsec, aexsec, excsc, aexcsc
epsilon
## Copyright (C) 2023 Landon Curt Noll

View File

@@ -53,6 +53,7 @@ SEE ALSO
aversin, acoversin, avercos, acovercos
haversin, hacoversin, havercos, hacovercos
ahaversin, hacoversin, havercos, ahacovercos
exsec, aexsec, excsc, aexcsc
epsilon
## Copyright (C) 1999,2021,2023 Landon Curt Noll

View File

@@ -53,6 +53,7 @@ SEE ALSO
aversin, acoversin, avercos, acovercos
haversin, hacoversin, havercos, hacovercos
ahaversin, hacoversin, havercos, ahacovercos
exsec, aexsec, excsc, aexcsc
epsilon
## Copyright (C) 1999,2021,2023 Landon Curt Noll

View File

@@ -53,6 +53,7 @@ SEE ALSO
aversin, acoversin, avercos, acovercos
haversin, hacoversin, havercos, hacovercos
ahaversin, hacoversin, havercos, ahacovercos
exsec, aexsec, excsc, aexcsc
epsilon
## Copyright (C) 1999,2023 Landon Curt Noll

View File

@@ -53,6 +53,7 @@ SEE ALSO
aversin, acoversin, acovercos
haversin, hacoversin, havercos, hacovercos
ahaversin, hacoversin, havercos, ahacovercos
exsec, aexsec, excsc, aexcsc
epsilon
## Copyright (C) 2023 Landon Curt Noll

View File

@@ -53,6 +53,7 @@ SEE ALSO
acoversin, avercos, acovercos
haversin, hacoversin, havercos, hacovercos
ahaversin, hacoversin, havercos, ahacovercos
exsec, aexsec, excsc, aexcsc
epsilon
## Copyright (C) 2023 Landon Curt Noll

View File

@@ -42,6 +42,7 @@ SEE ALSO
aversin, acoversin, avercos, acovercos
haversin, hacoversin, havercos, hacovercos
ahaversin, hacoversin, havercos, ahacovercos
exsec, aexsec, excsc, aexcsc
epsilon
## Copyright (C) 1999,2021,2023 Landon Curt Noll

View File

@@ -32,7 +32,7 @@ EXAMPLE
; print cot(pi/6), cot(pi/2), cot(pi)
1.73205080756887729353 0 -378303066284076833726.92240766640467212978
; # NOTE: The huge value for cot(pi) is due to the fact that pi is not exact.
; # NOTE: The huge value for cot(pi) is because the pi variable is not exactly pi.
LIMITS
0 < eps < 1
@@ -48,6 +48,7 @@ SEE ALSO
aversin, acoversin, avercos, acovercos
haversin, hacoversin, havercos, hacovercos
ahaversin, hacoversin, havercos, ahacovercos
exsec, aexsec, excsc, aexcsc
epsilon
## Copyright (C) 1999,2021,2023 Landon Curt Noll

View File

@@ -46,6 +46,7 @@ SEE ALSO
aversin, acoversin, avercos, acovercos
haversin, hacoversin, havercos, hacovercos
ahaversin, hacoversin, havercos, ahacovercos
exsec, aexsec, excsc, aexcsc
epsilon
## Copyright (C) 2023 Landon Curt Noll

View File

@@ -46,6 +46,7 @@ SEE ALSO
aversin, acoversin, avercos, acovercos
haversin, hacoversin, havercos, hacovercos
ahaversin, hacoversin, havercos, ahacovercos
exsec, aexsec, excsc, aexcsc
epsilon
## Copyright (C) 2023 Landon Curt Noll

View File

@@ -32,7 +32,7 @@ EXAMPLE
; print csc(pi/6), csc(pi/2), csc(pi)
2 1 378303066284076833726.92240766640467212978
; # NOTE: The huge value for csc(pi) is because pi, as calculated, is not exact.
; # NOTE: The huge value for csc(pi) is because the pi variable is not exactly pi.
LIMITS
0 < eps < 1
@@ -48,6 +48,7 @@ SEE ALSO
aversin, acoversin, avercos, acovercos
haversin, hacoversin, havercos, hacovercos
ahaversin, hacoversin, havercos, ahacovercos
exsec, aexsec, excsc, aexcsc
epsilon
## Copyright (C) 1999,2023 Landon Curt Noll

74
help/excsc Normal file
View File

@@ -0,0 +1,74 @@
NAME
excsc - exterior trigonometric secant
SYNOPSIS
excsc(x [,eps])
TYPES
x number (real or complex)
eps 0 < real < 1, defaults to epsilon()
return real
DESCRIPTION
Calculate the exterior trigonometric secant of x to a multiple of eps, with error less
in absolute value than .75 * eps.
This function is equivalent to:
excsc(x) = csc(x) - 1
EXAMPLE
; print excsc(1/2), excsc(5/7), excsc(42/7)
1.08582964293348818577 0.52653601091884339347 -4.57889954725440563736
; print excsc(1, 1e-5), excsc(1, 1e-10), excsc(1, 1e-15), excsc(1, 1e-20)
0.1884 0.1883951058 0.188395105778121 0.18839510577812121626
; print excsc(2 + 3i, 1e-5), excsc(2 + 3i, 1e-10)
~-0.90952681844549563690+~0.04120099965201690801i ~-0.90952679024696767497+~0.04120098628887626238i
; pi = pi(1e-20)
; print excsc(pi/6), excsc(pi/2), excsc(pi)
1 0 378303066284076833725.92240766640467212978
; # NOTE: The huge value for excsc(pi) is because the pi variable is not exactly pi.
LIMITS
0 < eps < 1
LINK LIBRARY
NUMBER *qexcsc(NUMBER *x, NUMBER *eps)
COMPLEX *c_excsc(COMPLEX *c, NUMBER *eps)
SEE ALSO
sin, cos, tan, cot, sec, csc
asin, acos, atan, acot, asec, acsc
versin, coversin, vercos, covercos
aversin, acoversin, avercos, acovercos
haversin, hacoversin, havercos, hacovercos
ahaversin, hacoversin, havercos, ahacovercos
exsec, aexsec, aexcsc
epsilon
## Copyright (C) 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: 2023/09/30 23:19:00
## File existed as early as: 2023
##
## chongo <was here> /\oo/\ http://www.isthe.com/chongo/
## Share and enjoy! :-) http://www.isthe.com/chongo/tech/comp/calc/

74
help/exsec Normal file
View File

@@ -0,0 +1,74 @@
NAME
exsec - exterior trigonometric secant
SYNOPSIS
exsec(x [,eps])
TYPES
x number (real or complex)
eps 0 < real < 1, defaults to epsilon()
return real
DESCRIPTION
Calculate the exterior trigonometric secant of x to a multiple of eps, with error less
in absolute value than .75 * eps.
This function is equivalent to:
exsec(x) = sec(x) - 1
EXAMPLE
; print exsec(1/2), exsec(5/7), exsec(42/7)
0.13949392732454912231 0.3235192673191814545 0.04148192659510767648
; print exsec(1, 1e-5), exsec(1, 1e-10), exsec(1, 1e-15), exsec(1, 1e-20)
0.85082 0.8508157177 0.850815717680926 0.85081571768092561791
; print exsec(2 + 3i, 1e-5), exsec(2 + 3i, 1e-10)
~-1.04167497639869547021+~0.09061109101765280898i ~-1.04167496441100888150+~0.09061113719571288336i
; pi = pi(1e-20)
; print exsec(pi/6), exsec(pi/2), exsec(pi)
0.15470053837925152902 756606132568153667452.84481533280934425956 -2
; # NOTE: The huge value for exsec(pi/2) is because the pi variable is not exactly pi.
LIMITS
0 < eps < 1
LINK LIBRARY
NUMBER *qexsec(NUMBER *x, NUMBER *eps)
COMPLEX *c_exsec(COMPLEX *c, NUMBER *eps)
SEE ALSO
sin, cos, tan, cot, sec, csc
asin, acos, atan, acot, asec, acsc
versin, coversin, vercos, covercos
aversin, acoversin, avercos, acovercos
haversin, hacoversin, havercos, hacovercos
ahaversin, hacoversin, havercos, ahacovercos
aexsec, excsc, aexcsc
epsilon
## Copyright (C) 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: 2023/10/01 00:19:00
## File existed as early as: 2023
##
## chongo <was here> /\oo/\ http://www.isthe.com/chongo/
## Share and enjoy! :-) http://www.isthe.com/chongo/tech/comp/calc/

View File

@@ -46,6 +46,7 @@ SEE ALSO
aversin, acoversin, avercos, acovercos
haversin, hacoversin, havercos
ahaversin, hacoversin, havercos, ahacovercos
exsec, aexsec, excsc, aexcsc
epsilon
## Copyright (C) 2023 Landon Curt Noll

View File

@@ -46,6 +46,7 @@ SEE ALSO
aversin, acoversin, avercos, acovercos
haversin, havercos, hacovercos
ahaversin, hacoversin, havercos, ahacovercos
exsec, aexsec, excsc, aexcsc
epsilon
## Copyright (C) 2023 Landon Curt Noll

View File

@@ -46,6 +46,7 @@ SEE ALSO
aversin, acoversin, avercos, acovercos
haversin, hacoversin, hacovercos
ahaversin, hacoversin, havercos, ahacovercos
exsec, aexsec, excsc, aexcsc
epsilon
## Copyright (C) 2023 Landon Curt Noll

View File

@@ -46,6 +46,7 @@ SEE ALSO
aversin, acoversin, avercos, acovercos
hacoversin, havercos, hacovercos
ahaversin, hacoversin, havercos, ahacovercos
exsec, aexsec, excsc, aexcsc
epsilon
## Copyright (C) 2023 Landon Curt Noll

View File

@@ -32,7 +32,7 @@ EXAMPLE
; print sec(pi/6), sec(pi/2), sec(pi)
1.15470053837925152902 756606132568153667453.84481533280934425956 -1
; # NOTE: The huge value for sec(pi/2) is because pi, as calculated, is not exact.
; # NOTE: The huge value for sec(pi/2) is because the pi variable is not exactly pi.
LIMITS
0 < eps < 1
@@ -48,6 +48,7 @@ SEE ALSO
aversin, acoversin, avercos, acovercos
haversin, hacoversin, havercos, hacovercos
ahaversin, hacoversin, havercos, ahacovercos
exsec, aexsec, excsc, aexcsc
epsilon
## Copyright (C) 1999,2023 Landon Curt Noll

View File

@@ -42,6 +42,7 @@ SEE ALSO
aversin, acoversin, avercos, acovercos
haversin, hacoversin, havercos, hacovercos
ahaversin, hacoversin, havercos, ahacovercos
exsec, aexsec, excsc, aexcsc
epsilon
## Copyright (C) 1999,2021,2023 Landon Curt Noll

View File

@@ -32,7 +32,7 @@ EXAMPLE
; print tan(pi/6), tan(pi/2), tan(pi)
0.57735026918962576451 756606132568153667453.84481533280934425956 0
; # NOTE: The huge value for tan(pi/2) is due to the fact that pi is not exact.
; # NOTE: The huge value for tan(pi/2) is because the pi variable is not exactly pi.
LIMITS
0 < eps < 1
@@ -48,6 +48,7 @@ SEE ALSO
aversin, acoversin, avercos, acovercos
haversin, hacoversin, havercos, hacovercos
ahaversin, hacoversin, havercos, ahacovercos
exsec, aexsec, excsc, aexcsc
epsilon
## Copyright (C) 1999,2023 Landon Curt Noll

View File

@@ -46,6 +46,7 @@ SEE ALSO
aversin, acoversin, avercos, acovercos
haversin, hacoversin, havercos, hacovercos
ahaversin, hacoversin, havercos, ahacovercos
exsec, aexsec, excsc, aexcsc
epsilon
## Copyright (C) 2023 Landon Curt Noll

View File

@@ -46,6 +46,7 @@ SEE ALSO
aversin, acoversin, avercos, acovercos
haversin, hacoversin, havercos, hacovercos
ahaversin, hacoversin, havercos, ahacovercos
exsec, aexsec, excsc, aexcsc
epsilon
## Copyright (C) 2023 Landon Curt Noll