3次元の重力シミュレーション(地球重力場における衛星の振る舞い)
の計算部分(FPU)の速さを競います。
vさん提供のプログラム本体(実行形式:exeファイル)をサーキットとして利用します。
参戦される方はオイラー法に従ったバリバリに演算チューニングしたベンチマークプログラムを
DLLルーチンとしてください。
参戦DLLに装備すべき機能
サーキット整備班が用意する参戦用資料(簡易SDK:参戦用ヘッダファイル・defファイルサンプル・ソースサンプルおよびRound1参戦規定・規約)をご覧ください。
詳細については上記資料のRound1規定・規約をご覧ください。
基本アルゴリズム

基本アルゴリズムはEular法による人工衛星の軌道計算プロ
グラムが元になっています。
繰り返し回数は引数nで渡しますです。
サーブルーチン全体が性能評価区間です。この区間での最適化は
どのようなツール、
手法を使ってもかまいません。また、実行可能なCPUアーキテクチャーに制限があってもかまいません。
R = sat.P.X*sat.P.X+sat.P.Y*sat.P.Y+sat.P.Z*sat.P.Z;
w = GMdt/(sqrt(R)*R);
sat.V.X += w*sat.P.X;
sat.P.X += sat.V.X*dt;
sat.V.Y += w*sat.P.Y;
sat.P.Y += sat.V.Y*dt;
sat.V.Z += w*sat.P.Z;
sat.P.Z += sat.V.Z*dt;
n回の計算が終了した後最終位置座標(sat.P.X, sat.P.Y, sat.p.Z)を引数satに戻してください
プログラムに使用されるパラメータは以下のとおりです。
G = 6.67e-11;
M = 5.977e24; //地球の質量(kg)
GM = G*M;
GMdt = -GM*dt;
sat.P.X = 6.57e6; //地球の半径+200km
sat.P.Y = 0;
sat.P.Z = 0;
sat.V.X = 0; //初速7.92km/s
sat.V.Y = 6e3;
sat.V.Z = 5.17e3;
dtについては引数で渡されたものを使ってください。