使用命名空间标准;#包括#包括“mytypes.h”#包括#包括/*用于退出*/#包括/*对于sqrtl*/typedef void告密者(FLP*tbegin,FLP*tend,FLP*步长,INT*ndim);typedef void setupper(常量FLP tbegin,常量FLP tend,常数INT ndim,FLP*q、FLP*p、,FLP*qex、FLP*pex、,FLP*rpar,INT*ipar);typedef void EoM_eval(常量INT ndim,恒定FLP tnow,FLP*q,FLP*f、FLP*rpar、INT*ipar);typedef FLP哈密顿量(常数INT ndim,恒定FLP tnow,FLP*q,FLP*p、FLP*rpar、INT*ipar);typedef INT solfixer(INT编号,常量FLP t_old,常量FLP tnow,FLP*p、FLP*q、常数INT ndim、,FLP*rpar,INT*ipar);typedef FLP定子(常数INT ndim,常数INT nstep,常量FLP tbegin,常量FLP tend,FLP*q、FLP*p,FLP*qex、FLP*pex、,const FLP wall_time);类task_item{公众:内部冗长;//收集一些统计数据FLP e0;//初始能量(solfix使用)双增量最大值;//与初始值的最大偏差int eom_evals;//对运动方程函数的调用次数//通用可调参数// ... 偏心率(开普勒任务)// ... 初始速度(用于比率枪任务)字符串辅助;//用于控制输出点的密度:FLP odt;FLP good_out_t;int raw_points;//调用solfix的次数//(可能小于重新启动输出的次数)//建造师:task_item():详细度(1),e0(0),增量_最大值(0),eom_evals(0)、aux()、odt(0)和good_out_t(0),原始点(0){}//方法:虚拟solfixer solfix;虚拟统计;//你不必写哈密尔方法,但如果你不写,//默认值只返回零:虚拟哈密尔顿哈密尔;虚拟告密者信息=0;虚拟设置程序设置=0;虚拟EoM_eval EoM=0;};//拉入旧的链接列表类:#包括“list-item.h”外部列表项*菜单根;类tasklist_item:公共task_item,公共list_item{公众:tasklist_item(常量字符串名称):list_item(菜单根,名称){}};内联长双sqrt(长双foo){返回sqrtl(foo);}内联longdouble-sin(longdouble foo){返回sinl(foo);}内联长双cos(长双foo){返回cosl(foo);}