Jump to content

Talk:Trigonometric functions: Difference between revisions

→‎Notes on precise sin implemented in Rexx: added comments about the REXX code last digit accuracy. -- ~~~~
(→‎Notes on precise sin implemented in Rexx: added comments about the REXX code last digit accuracy. -- ~~~~)
Line 56:
 
Of course the Rexx implementation of sin could compute tthis higher precision and round it upon returning the value
 
: That's what the REXX program shows. It adds 10 digits to the number of digits (precision) you want to see in the output.
: Also, I long ago discovered that most trig and hyperbolic functions of this type usually require at least four extra digits to be used (but only for some values that are near asymptotic points and others near multiples or fractions of pi. So I added one more digits to be on the safe side. Since then, I made the addition to an even five for a few hyperbolic functions and then did the same to the trig functions, but used ten here (on Rosetta Code) for safety's sake. -- [[User:Gerard Schildberger|Gerard Schildberger]] 20:55, 22 June 2012 (UTC)
 
I discussed this topic 10 years ago on Vladimir Zabrovsky's Album of (Rexx) algorithms which contains a wealth of code.
 
: Did you change the REXX variable SHOWDIGS to 30? If so, I don't receive the same results you post. I assume you've must have cut and pasted from your own copy of the REXX program as the output format is much different. I would like to know what your results are for the REXX example as shown in Rosetta Code.
<br>I get (for SHOWDIGS=30):
<pre>
rads= 0.1 sin= 0.099833416646828152306814198 cos= 0.995004165278025766095561987 tan= 0.100334672085450545058080045
</pre>
and the output (for SHOWDIGS=35):
<pre>
 
rads= 0.1 sin= 0.09983341664682815230681419841062 cos= 0.99500416527802576609556198780387 tan= 0.10033467208545054505808004578111
</pre>
both of which required a modification to the REXX program; the code changes are:
<lang rexx>/*REXX program demonstrates some common trig functions (30 digits shown)*/
showdigs=30 /*show only ten digits of number.*/
numeric digits showdigs+10 /*DIGITS default is 9, but use */
/*extra digs to prevent rounding.*/
 
j=.1 /*just do 1/10 of a radian. for a special run. */
stuff = ' ' ' rads='show( (j)),
' sin='show(sin(j)),
' cos='show(cos(J))
/*don't let TAN go postal.*/
if abs(j)\==90 then stuff=stuff ' tan='show(tan(j))
say stuff
.
.
.</lang>
This isn't probably the best forum to discuss these types of code (result) minutia when code is taken out of context or the modified code or driver code isn't shown to verify your results. I can be contacted via E-mail to iron out these details before large amounts of chatter are posted. -- [[User:Gerard Schildberger|Gerard Schildberger]] 20:55, 22 June 2012 (UTC)
Cookies help us deliver our services. By using our services, you agree to our use of cookies.