Jump to content

Minkowski question-mark function: Difference between revisions

J: trivia
m (J: remove some silliness, add a small but movtivating example)
(J: trivia)
Line 474:
f=. 1|y
node=. *i.2 2 NB. node of Stern-Brocot tree
B=. ''
for. i.ITERCOUNT do.
B=. B, b=. f>:%/t=. +/node
node=. t (1-b)} node
end.
Line 486:
cf=. i.0
cur=. 0 NB. 1 if generating "top" side of cf
cnt=. 1 NB. "bits" (proposed continued fraction element)
for. i.ITERCOUNT do.
if. f=<. f do.
cf=. cf,%cnt break.
Line 500:
(+%)/(<.y),cf
}}</lang>
 
Task examples:
 
<lang J> minkowski 0.5*1+%:5
1.66667
((%:13)-7)%6
_0.565741
invmink _5%9
_0.565741
(p:%%:)2
3.53553
invmink minkowski (p:%%:)2
3.53553
minkowski invmink (p:%%:)2
3.53553
*:invmink 1.4 NB. square of inverse minkowski of 1.4
2</lang>
 
That said, note that this algorithm introduces significant numeric instability for √7 divided by 3:
6,962

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.