[Shootout-list] Tcl : n-body bench

Daniel South WildCard_25@HotMail.Com
Sun, 20 Mar 2005 05:28:13 +1000


Daniel South wrote:
| While this program does work, I expect it to timeout in the tests.
| Takes about 160secs on my pc at N=100000, so that should translate to
| about 8mins on the test pc :-)
|
that mangled the indents here it is as an attachment

Daniel South 


begin 666 n-body.tcl
M(R$O=7-R+V)I;B]T8VQS: T*#0HC(%1H92!'<F5A="!#;VUP=71E<B!,86YG
M=6%G92!3:&]O=&]U= T*(R!H='1P.B\O<VAO;W1O=70N86QI;W1H+F1E8FEA
M;BYO<F<O#0HC#0HC(&-O;G1R:6)U=&5D(&)Y($1A;FEE;"!3;W5T: T*#0IS
M970@4$D@,RXQ-#$U.3(V-3,U.#DW.3,-"G-E="!33TQ!4E]-05-3(%ME>'!R
M('LT("H@)%!)("H@)%!)?5T-"G-E="!$05E37U!%4E]914%2(#,V-2XR- T*
M#0IA<G)A>2!S970@8F]D>2 B#0H@(" @4W5N+'@@,"!3=6XL>2 P(%-U;BQZ
M(# @4W5N+'9X(# @4W5N+'9Y(# @4W5N+'9Z(# @4W5N+&UA<W,@)%-/3$%2
M7TU!4U,-"@T*(" @($IU<&ET97(L>" T+C@T,30S,30T,C0V-#<R,#DP92LP
M, T*(" @($IU<&ET97(L>2 M,2XQ-C S,C P-#0P,C<T,C@S.64K,# -"B @
M("!*=7!I=&5R+'H@+3$N,#,V,C(P-#0T-S$Q,C,Q,#EE+3 Q#0H@(" @2G5P
M:71E<BQV>"!;97AP<B![,2XV-C P-S8V-#(W-#0P,S8Y-&4M,#,@*B D1$%9
M4U]015)?645!4GU=#0H@(" @2G5P:71E<BQV>2!;97AP<B![-RXV.3DP,3$Q
M.#0Q.3<T,#0R-64M,#,@*B D1$%94U]015)?645!4GU=#0H@(" @2G5P:71E
M<BQV>B!;97AP<B![+38N.3 T-C P,38Y-S(P-C,P,C-E+3 U("H@)$1!65-?
M4$527UE%05)]70T*(" @($IU<&ET97(L;6%S<R!;97AP<B![.2XU-#<Y,3DS
M.#0R-#,R-C8P.64M,#0@*B D4T],05)?34%34WU=#0H-"B @("!3871U<FXL
M>" X+C,T,S,V-C<Q.#(T-#4W.3@W92LP, T*(" @(%-A='5R;BQY(#0N,3(T
M-SDX-38T,3(T,S T-SEE*S P#0H@(" @4V%T=7)N+'H@+30N,#,U,C,T,3<Q
M,30S,C$S.#%E+3 Q#0H@(" @4V%T=7)N+'9X(%ME>'!R('LM,BXW-C<T,C4Q
M,#<R-C@V,C0Q,64M,#,@*B D1$%94U]015)?645!4GU=#0H@(" @4V%T=7)N
M+'9Y(%ME>'!R('LT+CDY.#4R.# Q,C,T.3$W,C,X92TP,R J("1$05E37U!%
M4E]914%2?5T-"B @("!3871U<FXL=GH@6V5X<'(@>S(N,S T,3<R.3<U-S,W
M-C,Y,CEE+3 U("H@)$1!65-?4$527UE%05)]70T*(" @(%-A='5R;BQM87-S
M(%ME>'!R('LR+C@U.#@U.3@P-C8V,3,P.#$R92TP-" J("133TQ!4E]-05-3
M?5T-"@T*(" @(%5R86YU<RQX(#$N,C@Y-#,V.34V,C$S.3$S,3!E*S Q#0H@
M(" @57)A;G5S+'D@+3$N-3$Q,3$U,30P,38Y.#8S,3)E*S Q#0H@(" @57)A
M;G5S+'H@+3(N,C,S,#<U-S@X.3(V-34W,S1E+3 Q#0H@(" @57)A;G5S+'9X
M(%ME>'!R('LR+CDV-#8P,3,W-38T-S8Q-C$X92TP,R J("1$05E37U!%4E]9
M14%2?5T-"B @("!5<F%N=7,L=GD@6V5X<'(@>S(N,S<X-#<Q-S,Y-3DT.# Y
M-3!E+3 S("H@)$1!65-?4$527UE%05)]70T*(" @(%5R86YU<RQV>B!;97AP
M<B![+3(N.38U.#DU-C@U-# R,S<U-39E+3 U("H@)$1!65-?4$527UE%05)]
M70T*(" @(%5R86YU<RQM87-S(%ME>'!R('LT+C,V-C(T-# T,S,U,34V,CDX
M92TP-2 J("133TQ!4E]-05-3?5T-"@T*(" @($YE<'1U;F4L>" Q+C4S-SDV
M.3<Q,30X-3 Y,38U92LP,0T*(" @($YE<'1U;F4L>2 M,BXU.3$Y,S$T-C Y
M.3@W.38T,64K,#$-"B @("!.97!T=6YE+'H@,2XW.3(U.#<W,CDU,#,W,3$X
M,64M,#$-"B @("!.97!T=6YE+'9X(%ME>'!R('LR+C8X,#8W-S<R-#DP,S@Y
M,S(R92TP,R J("1$05E37U!%4E]914%2?5T-"B @("!.97!T=6YE+'9Y(%ME
M>'!R('LQ+C8R.#(T,3<P,#,X,C0R,CDU92TP,R J("1$05E37U!%4E]914%2
M?5T-"B @("!.97!T=6YE+'9Z(%ME>'!R('LM.2XU,34Y,C(U-#4Q.3<Q-3@W
M,&4M,#4@*B D1$%94U]015)?645!4GU=#0H@(" @3F5P='5N92QM87-S(%ME
M>'!R('LU+C$U,3,X.3 R,#0V-C$Q-#4Q92TP-2 J("133TQ!4E]-05-3?5TB
M#0H-"G!R;V,@861V86YC92![8B!D='T@>PT*(" @(&=L;V)A;"!B;V1Y#0H-
M"B @("!S970@;B!;;&QE;F=T:" D8ET-"B @("!W:&EL92![6VEN8W(@;B M
M,5T@/B M,7T@>PT*"7-E="!B,2!;;&EN9&5X("1B("1N70T*"7-E="!J("1N
M#0H)=VAI;&4@>UMI;F-R(&H@+3%=(#X@+3%]('L-"@D@(" @<V5T(&(R(%ML
M:6YD97@@)&(@)&I=#0H)(" @('-E="!D>"!;97AP<B![)&)O9'DH)&(Q+'@I
M("T@)&)O9'DH)&(R+'@I?5T-"@D@(" @<V5T(&1Y(%ME>'!R('LD8F]D>2@D
M8C$L>2D@+2 D8F]D>2@D8C(L>2E]70T*"2 @("!S970@9'H@6V5X<'(@>R1B
M;V1Y*"1B,2QZ*2 M("1B;V1Y*"1B,BQZ*7U=#0H-"@D@(" @<V5T(&0@6V5X
M<'(@>W-Q<G0H)&1X("H@)&1X("L@)&1Y("H@)&1Y("L@)&1Z("H@)&1Z*7U=
M#0H)(" @('-E="!M86<@6V5X<'(@>R1D=" O("@D9" J("1D("H@)&0I?5T-
M"@D@(" @<V5T(&UA9VUU;'0Q(%ME>'!R('LD8F]D>2@D8C(L;6%S<RD@*B D
M;6%G?5T-"@D@(" @<V5T(&UA9VUU;'0R(%ME>'!R('LD8F]D>2@D8C$L;6%S
M<RD@*B D;6%G?5T-"@T*"2 @("!S970@8F]D>2@D8C$L=G@I(%ME>'!R('LD
M8F]D>2@D8C$L=G@I("T@*"1D>" J("1M86=M=6QT,2E]70T*"2 @("!S970@
M8F]D>2@D8C$L=GDI(%ME>'!R('LD8F]D>2@D8C$L=GDI("T@*"1D>2 J("1M
M86=M=6QT,2E]70T*"2 @("!S970@8F]D>2@D8C$L=GHI(%ME>'!R('LD8F]D
M>2@D8C$L=GHI("T@*"1D>B J("1M86=M=6QT,2E]70T*#0H)(" @('-E="!B
M;V1Y*"1B,BQV>"D@6V5X<'(@>R1B;V1Y*"1B,BQV>"D@*R H)&1X("H@)&UA
M9VUU;'0R*7U=#0H)(" @('-E="!B;V1Y*"1B,BQV>2D@6V5X<'(@>R1B;V1Y
M*"1B,BQV>2D@*R H)&1Y("H@)&UA9VUU;'0R*7U=#0H)(" @('-E="!B;V1Y
M*"1B,BQV>BD@6V5X<'(@>R1B;V1Y*"1B,BQV>BD@*R H)&1Z("H@)&UA9VUU
M;'0R*7U=#0H)?0T*"7-E="!B;V1Y*"1B,2QX*2!;97AP<B![)&)O9'DH)&(Q
M+'@I("L@*"1D=" J("1B;V1Y*"1B,2QV>"DI?5T-"@ES970@8F]D>2@D8C$L
M>2D@6V5X<'(@>R1B;V1Y*"1B,2QY*2 K("@D9'0@*B D8F]D>2@D8C$L=GDI
M*7U=#0H)<V5T(&)O9'DH)&(Q+'HI(%ME>'!R('LD8F]D>2@D8C$L>BD@*R H
M)&1T("H@)&)O9'DH)&(Q+'9Z*2E]70T*(" @('T-"GT-"@T*<')O8R!E;F5R
M9WD@>V)]('L-"B @("!G;&]B86P@8F]D>0T*(" @('-E="!E(# -"@T*(" @
M('-E="!N(%ML;&5N9W1H("1B70T*(" @('=H:6QE('M;:6YC<B!N("TQ72 ^
M("TQ?2![#0H)<V5T(&(Q(%ML:6YD97@@)&(@)&Y=#0H)<V5T(&4@6V5X<'(@
M>R1E("L@*# N-2 J("1B;V1Y*"1B,2QM87-S*2 J("@@)&)O9'DH)&(Q+'9X
M*2!<#0H)(" @("H@)&)O9'DH)&(Q+'9X*2 K("1B;V1Y*"1B,2QV>2D@*B D
M8F]D>2@D8C$L=GDI("L@)&)O9'DH)&(Q+'9Z*2!<#0H)(" @("H@)&)O9'DH
M)&(Q+'9Z*2 I*7U=#0H-"@ES970@:B D;@T*"7=H:6QE('M;:6YC<B!J("TQ
M72 ^("TQ?2![#0H)(" @('-E="!B,B!;;&EN9&5X("1B("1J70T*"2 @("!S
M970@9'@@6V5X<'(@>R1B;V1Y*"1B,2QX*2 M("1B;V1Y*"1B,BQX*7U=#0H)
M(" @('-E="!D>2!;97AP<B![)&)O9'DH)&(Q+'DI("T@)&)O9'DH)&(R+'DI
M?5T-"@D@(" @<V5T(&1Z(%ME>'!R('LD8F]D>2@D8C$L>BD@+2 D8F]D>2@D
M8C(L>BE]70T*#0H)(" @('-E="!D(%ME>'!R('MS<7)T*"1D>" J("1D>" K
M("1D>2 J("1D>2 K("1D>B J("1D>BE]70T*"2 @("!S970@92!;97AP<B![
M)&4@+2 H*"1B;V1Y*"1B,2QM87-S*2 J("1B;V1Y*"1B,BQM87-S*2D@+R D
M9"E]70T*"7T-"B @("!]#0H@(" @<F5T=7)N("1E#0I]#0H-"@T*<')O8R!O
M9F9S971-;VUE;G1U;2![8GT@>PT*(" @(&=L;V)A;"!B;V1Y(%-/3$%27TU!
M4U,-"B @("!F;W)E86-H('MP>"!P>2!P>GT@>S @," P?2!B<F5A:PT*#0H@
M(" @9F]R96%C:"!B,2 D8B![#0H)<V5T('!X(%ME>'!R('LD<'@@*R D8F]D
M>2@D8C$L=G@I("H@)&)O9'DH)&(Q+&UA<W,I?5T-"@ES970@<'D@6V5X<'(@
M>R1P>2 K("1B;V1Y*"1B,2QV>2D@*B D8F]D>2@D8C$L;6%S<RE]70T*"7-E
M="!P>B!;97AP<B![)'!Z("L@)&)O9'DH)&(Q+'9Z*2 J("1B;V1Y*"1B,2QM
M87-S*7U=#0H@(" @?0T*(" @('-E="!B;V1Y*%-U;BQV>"D@6V5X<'(@>RTD
M<'@@+R D4T],05)?34%34WU=#0H@(" @<V5T(&)O9'DH4W5N+'9Y*2!;97AP
M<B![+21P>2 O("133TQ!4E]-05-3?5T-"B @("!S970@8F]D>2A3=6XL=GHI
M(%ME>'!R('LM)'!Z("\@)%-/3$%27TU!4U-]70T*?0T*#0IP<F]C(&UA:6X@
M>VY]('L-"B @("!S970@8F]D>4YA;65S(")3=6X@2G5P:71E<B!3871U<FX@
M57)A;G5S($YE<'1U;F4B#0H-"B @("!O9F9S971-;VUE;G1U;2 D8F]D>4YA
M;65S#0H@(" @<'5T<R!;9F]R;6%T("(E,"XY9B(@6V5N97)G>2 D8F]D>4YA
M;65S75T-"@T*(" @(&EN8W(@;@T*(" @('=H:6QE('M;:6YC<B!N("TQ77T@
M>V%D=F%N8V4@)&)O9'E.86UE<R P+C Q?0T*(" @('!U=',@6V9O<FUA=" B
M)3 N.68B(%ME;F5R9WD@)&)O9'E.86UE<UU=#0I]#0H-"G-E="!.(%ML:6YD
M97@@)&%R9W8@,%T-"FEF('LD3B \(#%]('MS970@3B Q,# P?0T*;6%I;B D
%3@T*#0H`
`
end