Trigonometric functions, in multiples of \(\pi\)#
Auxiliary function \(\mathrm{sinpi}(x) = \sin(\pi x)\)#
- ctx.sinpi(x)#
where
ctxismath53,mathc53,ctxcpp,ctxflint.Returns the sine of \(x \cdot \pi\). See also BoostMath [117], Ehrhardt [309] (4.2.57), Flint [812], Flint [802], Mpmath [583].
The function can also be expressed as
\[\sin\!\left(\pi z\right) = \frac{\pi}{\Gamma(z) \Gamma\!\left(1 - z\right)}\]An example in Python
>>> from xlcalcnet import xreal >>> xreal.SinPi(0.5) xreal('5.2359877559829887307E-1') >>> xreal.SinPi('0.51') xreal('5.3518479027559984754E-1')
An example in Visual Basic
>>> from xlcalcnet import Gpr >>> Gpr.SinPi(0.5) Gpr('5.2359877559829887307E-1') >>> Gpr.SinPi('0.51') Gpr('5.3518479027559984754E-1')
An example with real input:
>>> from xlcalcnet import dec, mpm, ipm >>> mpm.dps = 40; x = '1' >>> \mathrm{d}x = dec.sinpi(x); mx = mpm.sinpi(x); ix = ipm.sinpi(x) >>> mpm.show([\mathrm{d}x, mx, ix]) dec: 1.693993751058209749445923078164062862090E-40 mpm: 0.0e+0 ipm: 1.611255246984498999948306365093859981582e-40 (14.25%) >>> from xlcalcnet import mpm, fpm, gmp, apm >>> mpm.dps = 40; x = '1' >>> fx = fpm.sinpi(x); gx = gmp.sinpi(x); ax = apm.sinpi(x) >>> mpm.show([fx, gx, ax]) fpm: -0.00000000000000E+00 gmp: 4.134064219652797647299380610320968938829E-43 apm: 0.0e+0 (0.0%)
The following example with complex input shows that the relative error can be high in double precision:
>>> from xlcalcnet import dec, mpm, ipm >>> mpm.dps = 20; z = '1 + 0.001j' >>> \mathrm{d}z = dec.sinpi(z); mz = mpm.sinpi(z); iz = ipm.sinpi(z) >>> mpm.show([\mathrm{d}z, mz, iz], aligned=True) dec: -3.7356801068163132819E-20 - 3.1415978213051234531E-3j mpm: 0.0e+0 - 3.1415978213051234531e-3j ipm: -3.8307303903313326019e-20 (-4.422%) - 3.1415978213051234531e-3 (-2.633e-19%)j >>> from xlcalcnet import mpm, fpm, gmp, apm >>> mpm.dps = 20; z = '1 + 0.001j' >>> fz = fpm.sinpi(z); gz = gmp.sinpi(z); az = apm.sinpi(z) >>> mpm.show([fz, gz, az], aligned=True) fpm: -0.00000000000000E+00 - 3.14159782130512E-03j gmp: 6.5640394778502536443E-22 - 3.1415978213051234531E-03j apm: 0.0e+0 (0.0%) - 3.1415978213051234531e-3 (-1.58e-19%)j
Auxiliary function \(\mathrm{cospi}(x) = \cos(\pi x)\)#
- ctx.cospi(x)#
where
ctxismath53,mathc53,ctxcpp,ctxflint.Returns \(\cos(\pi x)\). See also BoostMath [104], Flint [812], Flint [802], Mpmath [566].
The function is calculated as
\[\cos\!\left(\pi z\right) = \frac{\pi}{\Gamma\!\left(\frac{1}{2} + z\right) \Gamma\!\left(\frac{1}{2} - z\right)}\]An example in Python
>>> from xlcalcnet import xreal >>> xreal.CosPi(0.5) xreal('5.2359877559829887307E-1') >>> xreal.CosPi('0.51') xreal('5.3518479027559984754E-1')
An example in Visual Basic
>>> from xlcalcnet import Gpr >>> Gpr.CosPi(0.5) Gpr('5.2359877559829887307E-1') >>> Gpr.CosPi('0.51') Gpr('5.3518479027559984754E-1')
An example with real input:
>>> from xlcalcnet import dec, mpm, ipm >>> mpm.dps = 40; x = '0.5' >>> \mathrm{d}x = dec.cospi(x); mx = mpm.cospi(x); ix = ipm.cospi(x) >>> mpm.show([\mathrm{d}x, mx, ix]) dec: 5.846996875529104874722961539082031431045E-40 mpm: 6.366197723675813430755350534900574481378e-1 ipm: 8.056276234922494999741531825469299907908e-41 (14.25%) >>> from xlcalcnet import mpm, fpm, gmp, apm >>> mpm.dps = 40; x = '0.5' >>> fx = fpm.cospi(x); gx = gmp.cospi(x); ax = apm.cospi(x) >>> mpm.show([fx, gx, ax]) fpm: -0.00000000000000E+00 gmp: 2.067032109826398823649690305160484469415E-43 apm: 0.0e+0 (0.0%)
The following example with complex input shows that the relative error can be high in double precision:
>>> from xlcalcnet import dec, mpm, ipm >>> mpm.dps = 20; z = '0.5 + 0.001j' >>> \mathrm{d}z = dec.cospi(z); mz = mpm.cospi(z); iz = ipm.cospi(z) >>> mpm.show([\mathrm{d}z, mz, iz], aligned=True) dec: 3.1321846206231396497E-20 - 3.1415978213051234531E-3j mpm: 6.3662036748134886471e-1 - 1.2732407349626977294e-3j ipm: -1.9153651951656663009e-20 (-4.422%) - 3.1415978213051234531e-3 (-2.633e-19%)j >>> from xlcalcnet import mpm, fpm, gmp, apm >>> mpm.dps = 20; z = '0.5 + 0.001j' >>> fz = fpm.cospi(z); gz = gmp.cospi(z); az = apm.cospi(z) >>> mpm.show([fz, gz, az], aligned=True) fpm: -0.00000000000000E+00 - 3.14159782130512E-03j gmp: 3.2820197389251268222E-22 - 3.1415978213051234531E-03j apm: 0.0e+0 (0.0%) - 3.1415978213051234531e-3 (-1.58e-19%)j
Auxiliary function \(\mathrm{tanpi}(x) = \tan(\pi x)\)#
- ctx.tanpi(x)#
where
ctxismath53,mathc53,ctxcpporctxflint.Returns \(\tan(\pi x)\). See also BoostMath [104], Flint [812], Flint [802].
An example in Python
>>> from xlcalcnet import xreal >>> xreal.TanPi(0.5) xreal('5.2359877559829887307E-1') >>> xreal.TanPi('0.51') xreal('5.3518479027559984754E-1')
An example in Visual Basic
>>> from xlcalcnet import Gpr >>> Gpr.TanPi(0.5) Gpr('5.2359877559829887307E-1') >>> Gpr.TanPi('0.51') Gpr('5.3518479027559984754E-1')
Auxiliary function \(\mathrm{cotpi}(x) = \cot(\pi x)\)#
- ctx.cotpi(x)#
Returns \(\cot(\pi x)\). See also BoostMath [104], Flint [812], Flint [802].
An example in Python
>>> from xlcalcnet import xreal >>> xreal.TanPi(0.5) xreal('5.2359877559829887307E-1') >>> xreal.TanPi('0.51') xreal('5.3518479027559984754E-1')
An example in Visual Basic
>>> from xlcalcnet import Gpr >>> Gpr.TanPi(0.5) Gpr('5.2359877559829887307E-1') >>> Gpr.TanPi('0.51') Gpr('5.3518479027559984754E-1')
Auxiliary function \(\mathrm{cscpi}(x) = \mathrm{csc}(\pi x)\)#
- ctx.cscpi(x)#
Returns \(\mathrm{cscpi}(x)\). See also BoostMath [104], Flint [812], Flint [802].
An example in Python
>>> from xlcalcnet import xreal >>> xreal.TanPi(0.5) xreal('5.2359877559829887307E-1') >>> xreal.TanPi('0.51') xreal('5.3518479027559984754E-1')
An example in Visual Basic
>>> from xlcalcnet import Gpr >>> Gpr.TanPi(0.5) Gpr('5.2359877559829887307E-1') >>> Gpr.TanPi('0.51') Gpr('5.3518479027559984754E-1')
Auxiliary function \(\mathrm{secpi}(x) = \mathrm{sec}(\pi x)\)#
- ctx.secpi(x)#
Returns \(\mathrm{secpi}(x)\). See also BoostMath [104], Flint [812], Flint [802].
An example in Python
>>> from xlcalcnet import xreal >>> xreal.TanPi(0.5) xreal('5.2359877559829887307E-1') >>> xreal.TanPi('0.51') xreal('5.3518479027559984754E-1')
An example in Visual Basic
>>> from xlcalcnet import Gpr >>> Gpr.TanPi(0.5) Gpr('5.2359877559829887307E-1') >>> Gpr.TanPi('0.51') Gpr('5.3518479027559984754E-1')
Auxiliary function \(\mathrm{sincpi}(x) = \mathrm{sinc}(\pi x)\)#
- ctx.sincpi(x)#
where
ctxismath53,mathc53,ctxcpp,ctxflint.Returns the cardinal sine of \(x\). See also Wikipedia [1397], MathWorld [1007], BoostMath [133], Flint [812], Flint [802], Mpmath [564].
sincpi(x)computes the normalized sinc function, defined as \(\displaystyle \mathrm{sinc}_{\pi}(x) = \begin{cases} \sin(\pi x)/(\pi x), & \mbox{if } x \ne 0 \\ 1, & \mbox{if } x = 0. \end{cases}\)We also have
\[\operatorname{sinc}\!\left(\pi z\right) = \frac{1}{\Gamma\!\left(1 + z\right) \Gamma\!\left(1 - z\right)}\]An example in Python
>>> from xlcalcnet import xreal >>> xreal.SincPi(0.5) xreal('5.2359877559829887307E-1') >>> xreal.SincPi('0.51') xreal('5.3518479027559984754E-1')
An example in Visual Basic
>>> from xlcalcnet import Gpr >>> Gpr.SincPi(0.5) Gpr('5.2359877559829887307E-1') >>> Gpr.SincPi('0.51') Gpr('5.3518479027559984754E-1')
An example with real input:
>>> from xlcalcnet import dec, mpm, ipm >>> mpm.dps = 40; x = '1' >>> \mathrm{d}x = dec.sincpi(x); mx = mpm.sincpi(x); ix = ipm.sincpi(x) >>> mpm.show([\mathrm{d}x, mx, ix]) dec: 5.392149580953913737979904979126873615591E-41 mpm: 0.0e+0 ipm: 5.128784742806714043026919518912335705533e-41 (14.25%) >>> from xlcalcnet import mpm, fpm, gmp, apm >>> mpm.dps = 40; x = '1' >>> fx = fpm.sincpi(x); gx = gmp.sincpi(x); ax = apm.sincpi(x) >>> mpm.show([fx, gx, ax]) fpm: -0.00000000000000E+00 gmp: 1.315913511234163417803178607374054707137E-43 apm: 0.0e+0 (0.0%)
The following example with complex input shows that the relative error can be high in double precision:
>>> from xlcalcnet import dec, mpm, ipm >>> mpm.dps = 20; z = '1 + 0.001j' >>> \mathrm{d}z = dec.sincpi(z); mz = mpm.sincpi(z); iz = ipm.sincpi(z) >>> mpm.show([\mathrm{d}z, mz, iz], aligned=True) dec: -1.0000006449342455476E-6 - 1.0000006449342336566E-3j mpm: -1.0000006449342336566e-6 - 1.0000006449342336566e-3j ipm: -1.0000006449342458502e-6 (-5.392e-14%) - 1.0000006449342336566e-3 (-5.79e-19%)j >>> from xlcalcnet import mpm, fpm, gmp, apm >>> mpm.dps = 20; z = '1 + 0.001j' >>> fz = fpm.sincpi(z); gz = gmp.sincpi(z); az = apm.sincpi(z) >>> mpm.show([fz, gz, az], aligned=True) fpm: -1.00000064493423E-06 - 1.00000064493423E-03j gmp: -1.0000006449342334477E-06 - 1.0000006449342336566E-03j apm: -1.0000006449342336566e-6 (-4.362e-18%) - 1.0000006449342336566e-3 (-4.301e-18%)j