include Math

x = 1
y = 0
z = 0
vx = 0
vy = 0.5
vz = 0
dt = 0.01

print(x, "  ", y, "  ", z, "  ")
print(vx, "  ", vy, "  ", vz, "\n")

1000.times{
  r2 = x*x + y*y + z*z
  r3 = r2 * sqrt(r2)
  ax = - x / r3
  ay = - y / r3
  az = - z / r3
  x1 = x + vx*dt                             
  y1 = y + vy*dt                             
  z1 = z + vz*dt                             
  vx1 = vx + ax*dt
  vy1 = vy + ay*dt
  vz1 = vz + az*dt
  r12 = x1*x1 + y1*y1 + z1*z1
  r13 = r12 * sqrt(r12)
  ax1 = - x1 / r13
  ay1 = - y1 / r13
  az1 = - z1 / r13
  x2 = x1 + vx1*dt
  y2 = y1 + vy1*dt
  z2 = z1 + vz1*dt
  vx2 = vx1 + ax1*dt
  vy2 = vy1 + ay1*dt
  vz2 = vz1 + az1*dt
  x = 0.5 * (x + x2)
  y = 0.5 * (y + y2)
  z = 0.5 * (z + z2)
  vx = 0.5 * (vx + vx2)
  vy = 0.5 * (vy + vy2)
  vz = 0.5 * (vz + vz2)
  print(x, "  ", y, "  ", z, "  ")
  print(vx, "  ", vy, "  ", vz, "\n")
}