``` // Program to find the time spent falling through a hole in the earth assuming // a non-uniform earth.  The density of the earth is modeled using a linear // range of densities starting from 2.2 g/cm^3 at the surface and going to // 13.0 g/cm^3 at the core.  There is a small "fudge-factor" to make this // integrated density equal the known mass of the earth. // This program is written in Frink: //  https://frinklang.org/ // // Alan Eliasen, eliasen@mindspring.com earthdensity := earthmass / (4/3 pi earthradius^3) // This finds the mass that's still below you at a given distance from the // earth's center. mass[dist is length] := dist^3 21.4938 1.0748347372 ((2.2-13.0) dist/earthradius  + 13.0) g/cm^3 / 2.2  // Find the acceleration at a given distance from the core. a[dist is length] := G mass[dist]/dist^2 println[mass[earthradius]] var v is velocity = 0 m/s         // Velocity at end of timestep var stepsize is time = 1/100 s var d is length = earthradius var t is time = 0 s var a is acceleration = 0 gravity while (d > 0 m) {    t = t + stepsize    a = a[d]    v = v + a stepsize    d = d - v stepsize    // Print results every second    if (t mod sec == 0 s)      println[(t -> sec) + "\t" + (d->km) + "\t" + (v->mph) + "\t" + (a->m/s^2)] } // Print final times println[(1. t -> ["min", "sec"]) + "\t, " + (v->"mph")] ```