# Signature programs by Andrew Garrard

This signature programs are rather long, a little too long for a signature, but nevertheless interesting engough.

ART raytracing sig - try giving it various numbers of parameters. (Usual provisos about -lm and including math.h if necessary)

```typedef double f;typedef struct{f x,y,z;}p;p L={1,-2,1},B,s={0,-30,0},e,C;f
b,n,A,D,F;f d(p a,p b){return a.x*b.x+a.y*b.y+a.z*b.z;}p q(p a,p b){p v;v.x=
a.x-b.x;v.y=a.y-b.y;v.z=a.z-b.z;return v;}f i(p U,p V,p W){D=2*d(C=q(V,U),W)
;A=d(W,W);if((F=D*D-4*A*(d(C,C)-1))<0)return-1;D=(d(q(V,U),q(V,U))<1?sqrt(F)
:-sqrt(F))-D;return D>0?D/2/A:-1;}r(a){return 1<<a%6&"@EEE@!!`EEG:!!AA`AA"[a
/6]-33;}p g(a){p v;v.x=a/6-9;v.z=a%6-2.5-1/sqrt(97);v.y=-1;return v;}c(p u,p
t){int P=-1,T=0,S=-1;for(b=-u.y/t.y;++P<114;r(P)&&(n=i(g(P),u,t))>=0&&n<b&&(
b=n,S=P));B.x=u.x+b*t.x;B.y=u.y+b*t.y;B.z=u.z+b*t.z;for(P=-1;++P<114;P!=S&&r
(P)&&i(g(P),B,L)>=0&&(T=1));return T?0:S<0?-6/sqrt(d(L,L))*L.y:(b=d(q(B,g(S)
),L)/sqrt(d(L,L)))<0?0:9*b;}main(m){e.y=30;for(e.z=5;(e.z-=.6/m)>-5;puts("")
)for(e.x=-11;e.x<11;e.x+=.3/m)printf("%c",c(s,e)["MHRXY]i:' "]);return!puts(
"Andrew Garrard -- xxx@xxx.xx.xx -- xxxxxxxxxx@xxxxxxx.xxxxx.xx.xx");}
```
"Compressed" ART raytracing sig (Huffman coded - I now have a script which generates these. I'm working on an LZ77 version, which might actually make the sig *smaller*...)
```#define Q (x++,a[x/6]-33&1<<x%6)/* gcc sig.c -o a;a>b.c;gcc b.c -lm;a.out */
char *a="Z/>)*EW3KDHN+U3`Z/>)*EW?F896Z,J.H4XR_@8`VNKD,I4MU\$[_2^ZVYC\\*#T^Y?"
"`%/F^4.H04H_H?H#`JN%2XW/[W-@:&SYV5<D=-G*H^<5HR-VN@DM.G*\\`>>\\NI<<(><GPI<8"
"J!_5%<_\\03EC/&R`+JC5YIH2P)]\'^.E%JM4:=%R]48?&SYV5%^\\.E%ZN5]J!_]7+_5!T02!"
"@^?FF#:4`R8P8:J1GD^_L1\'PG;^+R&9P>FOLP`)[@@*<]F6)D84.UTH<_IQ\$K=!!!5O3F_#!A"
"<Y8JS_^^6`_1_?T=H#LDQA^PL<AE._CO>^@F=\'<\\5%N]@FM(<_I)7+\"8%N\\V\\67M]GT`L"
"5X)C_L1\'PG;8`X6*[\'_I.T]F+4ZWD2%>M9Y?!0CI@;^F-0C9K<8G[_\\X`Y*#\"`@*0900:;"
"52!*0Y\$_E:OEBLHXUT:00R=?->!0?Q]8.Z-QET_:D-Z]64>\$-VN@W)4>@VE^!4W\\H.SE^0N_3"
"?-CI`_^0?C1Q`@I=!WT<:+090P+#)Z\"@5@KSF-=^]%,\')G`L1\'PG;7!UV0YHO!D+W^[^+,*"
"3V46G.K3>_FZ2C]75@!*A:4_5FX^[^+,*3V46GZHO!>^<JR]`_N<6GE<Z,\"K<!T^H7@*\"S?!"
"X8#E>=1+W>,83%OP\'H@*11M*H7@*\"S:%2I@A=?C1`!ZM@1QW>,L86GSJ#E0KA/KE8H!\\<I;"
"^G6,V?N:>&`X5\$S;_P#:];3J\'H@*G1^H37B;UORW;NN3;R9<L\'A+@<F*6V*=.<R9,V+M7(SB"
"QK]5LQ;>)4*B<L02KK4Y;#R`\\G";int x=-1;main(c){for(c=0;c++<917;printf("%c",(
Q?Q?Q?Q?Q?27:Q?Q?81:83:Q?28:48:Q?Q?Q?93:Q?77:Q?Q?Q?23:40:7:39:Q?86:91:12:Q?Q
?Q?Q?11:15:65:82:Q?Q?66:78:29:Q?Q?Q?Q?Q?33:36:89:0:Q?Q?Q?79:Q?Q?Q?56:57:Q?45
:50:Q?75:87:Q?44:73:Q?Q?Q?32:35:Q?18:30:Q?Q?54:55:Q?38:53:Q?Q?84:Q?70:68:Q?
13:69:Q?Q?Q?Q?Q?Q?26:Q?Q?59:64:5:6:Q?16:88:Q?Q?90:Q?Q?61:76:Q?25:52:Q?-22:10
:Q?Q?80:Q?Q?34:67:Q?1:22:8:Q?Q?9:14:Q?Q?85:17:Q?Q?Q?Q?20:21:19:2:Q?Q?51:71:Q
?31:37)+32));return 0;}/* Andrew Garrard - xxxxxxxxxx@xxxxxxx.xxxxx.xx.xx */
```
"Compressed" output of the ART sig (at default size)
```#define Q (x++,a[x/6]-'!'&1<<x%6)/*-,,-''- Hint: use a C compiler -''-,,-*/
char *a="!!!!!!!!!!!!U!!!!!!!!!!!!1\$A[_0_PO`0!5X`R^V^@=`\$A=>`(`8X`R`V^0;!S"
"V^@=@>`@\"Q[LY_[?R^V^`\"MFLY_Y_+OPO8=`2\$=`X4F6^:6]`@MN[_P8V.L[JO`@WW[TKMK"
"O`\\6>T+UQ%X>RWWW7OO\\#W[+O\\KNNNV6>XRWWWW7PYO<<!.M[_`0\'<T^`@MV8X`PRW7@>"
"``Q9<<Z[_`!1\$,8R>R>V>ZYS6=8AV6&8=8/OLOFLY/!MNOKY#!UQK\\`Y_`_0O`D``DN_[_0O"
"PO`D\\`VX\$ANN=>``!IBV,C=&B+S6%K)+W7OC1&:2EL)+!QW7XM)+!UQK\\``WWWW%X`(<^V^"
"`PNN=>`@!ANN=&`@!IBV.86F:MNO:6>MN?6RWWSK[_`\"9<<^K#!;9C\\P)\$-R^8AV,O`+WW7"
"8R^(!W7PY_\$!.MVHF\\#MN_M-WW[J(MNN_M?!WW7X-!1\$WW!QW\'QW\'!WW\'!QW\'!!.!!!!"
"!!!!!!!!UEI*M^>U:#;,23JD/3JDWX7KJW7+*)R<2+>US74;\\;.NEX7KJW7337;JH?HNMT/"
"\\I&**:JF?[>WS7<@H*7\\39L*N>NG7S<!";int x=-1;main(c){for(c=0;c++<1266;
printf("%c",(Q?Q?Q?Q?7:26:45:Q?Q?Q?Q?50:Q?40:Q?69:82:Q?Q?Q?Q?68:79:0:Q?14:Q
?84:32:-22:61:Q?Q?56:Q?Q?Q?80:85:Q?13:65:Q?Q?Q?75:76:Q?67:70:Q?Q?Q?71:77:Q?
33:39:Q?78:87:73:57)+32));return 0;}/* Andrew Garrard -<>- xxx@xxx.xx.xx */
```

The Signature Program homepage