Minkowski question-mark function: Difference between revisions

m
→‎{{header|REXX}}: tidied up some DO group codes.
m (→‎{{header|REXX}}: changed use of INT to FLOOR.)
m (→‎{{header|REXX}}: tidied up some DO group codes.)
Line 354:
q= 1; s= 1; m= 0; n= 0; d= 1; y= p
r= p + 1
do forever; d= d * 0.5; if y+d=y | d=0 then leave /*d= d/2.d÷2*/
if dm=0 p + r; if m<0 | p<0 then leave
mn= pq + rs; if n<0 then leave
if mx<0m/n | p<0 then leavedo; r= m; s= n; end
n else do; y= qy + sd; p= m; q= n; end
if n<0 then leave
if x<m / n then do; r= m; s= n
end
else do; y= y + d; p= m; q= n
end
end /*forever*/
return y + d
Line 371 ⟶ 366:
curr= 0; count= 1; maxIter= 200; $=
 
do until count==maxIter | words($)==maxIter; x= x + x /*a fast double*/
if curr==0 then if x<1 then count= count + 1
else do; $= $ count; count= 1; curr= 1; x= x-1; end
else if x>1 then do; count= count + 1; x= x-1; end
else if x>1 then do; else do; $= $ count; count= 1; countcurr= count0; + 1; x= x-1 end
if x==floor(x) then do; $= $ count; leave; end
end /*until*/
else do; $= $ count; count= 1; curr= 0
end
if x==floor(x) then do; $= $ count
leave
end
end /*until*/
 
#= words($)