{{위키데이터 속성 추적}}
'''투퍼의 자기언급 공식'''({{llang|en|Tupper's self-referential formula}})은 그래프를 그렸을 때 (''x'', ''y'') 평면의 특정 위치에 그 수식이 시각적으로 나타나는 [[공식]]이다.

== 역사 ==
이 공식은 제프 투퍼(Jeff Tupper)에 의해 정의되었으며 신뢰할 수 있는 2차원 컴퓨터 그래핑 알고리즘에 대한 투퍼의 2001년 [[SIGGRAPH]] 논문에 예시로 나타난다.<ref>* [http://www.dgp.toronto.edu/~mooncake/papers/SIGGRAPH2001_Tupper.pdf Tupper, Jeff. "Reliable Two-Dimensional Graphing Methods for Mathematical Formulae with Two Free Variables"]</ref> 이 논문은 투퍼가 개발한 GrafEq 그래핑 프로그램과 관련된 방법에 대해 설명한다.<ref>{{웹 인용|url=http://www.peda.com/grafeq/|title=Pedagoguery Software: GrafEq}}</ref>

공식은 "[[자기언급]]"이라고 불리지만 투퍼는 그렇게 이름을 지정하지 않았다.<ref>{{웹 인용|last1=Narayanan |first1=Arvind |title=Tupper’s Self-Referential Formula Debunked |url=http://arvindn.livejournal.com/132943.html |access-date=20 February 2015 |url-status=dead |archive-url=https://web.archive.org/web/20150424181239/http://arvindn.livejournal.com/132943.html |archive-date=24 April 2015 }}</ref>

== 공식 ==

공식은 다음과 같이 정의되는 [[부등식]]이다.

: <math>\frac{1}{2} < \left\lfloor \mathrm{mod}\left(\left\lfloor \frac{y}{17} \right\rfloor 2^{-17 \lfloor x \rfloor - \mathrm{mod}\left(\lfloor y\rfloor, 17\right)},2\right)\right\rfloor</math>
평문으로는,
: {{code|1/2 < floor(mod(floor(y/17)*2^(-17*floor(x)-mod(floor(y),17)),2))}}

⌊&nbsp;⌋는 [[바닥 함수]], mod는 [[모듈러 산술|모듈러 연산]]이다.

''k''를 다음 543자리 정수라 하자:

:960 939 379 918 958 884 971 672 962 127 852 754 715 004 339 660 129 306 651 505 519 271 702 802 395 266 424 689 642 842 174 350 718 121 267 153 782 770 623 355 993 237 280 874 144 307 891 325 963 941 337 723 487 857 735 749 823 926 629 715 517 173 716 995 165 232 890 538 221 612 403 238 855 866 184 013 235 585 136 048 828 693 337 902 491 454 229 288 667 081 096 184 496 091 705 183 454 067 827 731 551 705 405 381 627 380 967 602 565 625 016 981 482 083 418 783 163 849 115 590 225 610 003 652 351 370 343 874 461 848 378 737 238 198 224 849 863 465 033 159 410 054 974 700 593 138 339 226 497 249 461 751 545 728 366 702 369 745 461 014 655 997 933 798 537 483 143 786 841 806 593 422 227 898 388 722 980 000 748 404 719

0&nbsp;≤&nbsp;''x''&nbsp;<&nbsp;106, ''k''&nbsp;≤&nbsp;''y''&nbsp;<&nbsp;''k''&nbsp;+&nbsp;17 범위에서 위 부등식을 만족시키는 점 (''x'',&nbsp;''y'')들의 집합을 [[함수의 그래프|그래프]]로 그리면, 그 그래프는 이렇게 보인다. (두 축이 뒤집어져 있다.)

[[파일:Tupper's self referential formula plot.svg]]
[[파일:Tupper_formula_constant_derivation.svg|섬네일|91px<!-- 91px gives acceptable text rendering with least overshoot or ugly gaps -->|''k'' 값의 유도]]


이 공식은 상수 ''k''에 저장된 비트맵을 해독하는 범용적인 방법이며, 실제로 다른 이미지를 그리는 데 사용될 수 있다. 제한되지 않은 양수 범위 0&nbsp;≤&nbsp;''y''에 적용하면 이 공식은 가능한 17 픽셀 높이의 비트맵을 모두 포함하는 패턴으로 평면의 수직 띠를 타일링한다.

무한 비트맵의 수평 조각은 그리는 공식 자체를 묘사하지만, 다른 조각은 17픽셀 높이의 비트맵에 들어맞을 수 있는 다른 모든 공식들을 묘사하고 있기 때문에, 이것은 주목할 만한 것이 아니다.

투퍼는 한 조각을 제외한 모든 부분을 배제하는 그의 원래 공식의 확장 버전을 만들었다.<ref>http://www.peda.com/selfplot/selfplot3big.png</ref><ref>http://www.peda.com/selfplot/selfplot2.png</ref><ref>http://www.peda.com/selfplot/selfplot.png</ref>

상수 ''k''는 이진수로 처리되고 17을 곱한 공식의 단순한 [[단색]] [[비트맵]] 이미지다. ''k''를 17로 나눈 경우, [[최하위 비트]]는 오른쪽 상단 모서리 (''k'',&nbsp;0)을 인코딩하고, 17개의 최하위 비트는 가장 오른쪽 픽셀 열을 인코딩하고, 다음 17개의 최하위 비트는 두 번째 오른쪽 열을 인코딩하는 식으로 작업한다.

그것은 기본적으로 2차원 표면에 점을 그리는 방법을 설명한다. ''k'' 값은 10진법에서 그래프를 구성하는 이진수다. 다음 그림은 ''k''의 다른 값을 추가하는 것을 보여준다. 네 번째 부분그래프에는 "AFGP"와 "Aesthetic Function Graph"의 ''k'' 값이 추가되어 결과 그래프를 얻는데, 여기서 이진법 덧셈의 효과로 인해 두 텍스트 모두 약간의 왜곡으로 보일 수 있다. 그래프의 모양에 관한 정보는 ''k'' 안에 저장되어 있다.<ref>{{인용|title=Tupper's-Function|date=2019-06-13|url=https://github.com/AEFGP/Tupper-s-Function|publisher=Aesthetic Function Graphposting|access-date=2019-07-07}}</ref>

<br />
[[파일:Tuppers-formula-test.png|center|섬네일|다른 ''k'' 값들의 덧셈]]

== 같이 보기 ==
* [[비트맵]]
* [[콰인 (전산학)]]
* [[재귀]]
* [[이상한 루프]]

== 각주 ==
===노트===
{{각주}}

===출처===
{{참고 자료 시작}}
* [http://mathworld.wolfram.com/TuppersSelf-ReferentialFormula.html Weisstein, Eric W. "Tupper's Self-Referential Formula." From MathWorld—A Wolfram Web Resource.]
* [http://crd-legacy.lbl.gov/~dhbailey/dhbpapers/hpmpd.pdf Bailey, D. H.; Borwein, J. M.; Calkin, N. J.; Girgensohn, R.; Luke, D. R.; and Moll, V. H. Experimental Mathematics in Action. Natick, MA: A. K. Peters, p.&nbsp;289, 2006.]
* "Self-Answering Problems." Math. Horizons 13, No. 4, 19, April 2006
* [http://stanwagon.com/wagon/Misc/bestpuzzles.html Wagon, S. Problem 14 in stanwagon.com] {{웨이백|url=http://stanwagon.com/wagon/Misc/bestpuzzles.html |date=20070202043013 }}
{{참고 자료 끝}}

== 외부 링크 ==
* {{공식 웹사이트}}
* [http://www.peda.com/selfplot/ Extensions of Tupper's original self-referential formula]
* [https://amcrae.github.io/TupperPlot/TupperPlot.html TupperPlot], 자바스크립트 구현
* [https://web.archive.org/web/20130319093833/http://www.pypedia.com/index.php/Tupper_self_referential_formula Tupper self referential formula], 파이썬 구현
* [http://avitzur.hax.com/2007/01/the_library_of_babel_function.html The Library of Babel function], 투퍼의 자기언급 공식의 작동에 대한 자세한 설명
* [https://tuppers-formula.ovh Tupper's Formula Tools], 자바스크립트 구현
* [http://jtra.cz/stuff/essays/math-self-reference/index.html Trávník's formula that draws itself close to the origin]
* [https://www.youtube.com/watch?v=_s5RFgd59ao A video explaining the formula]

[[분류:부등식]]
[[분류:자기언급]]
[[분류:2001년 도입]]
[[분류:컴퓨터 그래픽스]]