Anonymous user
Horizontal sundial calculations: Difference between revisions
m
→{{header|REXX}}: changed extra digits and optimized the sqrt function, added a comment.
m (→{{header|REXX}}: added/changed whitespace and comments, simplified some functions, corrected some typos.) |
m (→{{header|REXX}}: changed extra digits and optimized the sqrt function, added a comment.) |
||
Line 1,629:
/*──────────────────────────────────subroutines───────────────────────────────*/
sep: say indent copies('═',w1) copies('═',w2) copies('═',w3); return
d2d: return arg(1)
d2r: return r2r(arg(1)*pi() / 180) /*convert degrees ──► radians. */
r2d: return d2d((arg(1)*180 / pi())) /*convert radians ──► degrees. */
r2r: return arg(1)
tan: procedure; parse arg x; _=cos(x); if _=0 then call tanErr; return sin(x)/_
tanErr: call tellErr 'tan(' || x") causes division by zero, X=" || x
Line 1,648:
cos: procedure; arg x; x=r2r(x); a=abs(x); numeric fuzz min(9,digits()-9)
if a=pi() then return -1; if a=pi()/2 | a=
if a=pi()/3 then return .5; if a=
return .sincos(1,1,-1)
.sinCos: parse arg z,_,i; x=x*x; p=z
Line 1,666:
sqrt: procedure; parse arg x; if x=0 then return 0; d=digits(); i=; m.=9
numeric digits 9; numeric form; h=d+6; if x<0 then do; x=-x; i='i'; end
parse value format(x,2,1,,0) 'E0' with g 'E' _ .; g=g*.5'
do j=0 while h>9; m.j=h; h=h%2+1; end /*j*/
do k=j+5 to 0 by -1; numeric digits m.k; g=
numeric digits d; return (g/1)i /*make complex if X < 0.*/</lang>
'''
<pre>
latitude: -4.95
|