> 
> R := 6371;

                                    R := 6371
# This is the IASP91 P wave velocity model
> v := r -> piecewise(-1, r<=1217.1, 11.24094 - 4.09689*(r/R)^2,
> r<=3482, 10.03904 + 3.75665*(r/R)-13.67046*(r/R)^2,
> r<=3631, 14.49470-1.47089*(r/R),
> r<=5611, 25.1486-41.1538*(r/R)+51.9932*(r/R)^2-26.6083*(r/R)^3,
> r<=5711, 25.96984-16.93412*(r/R),
> r<=5961, 29.38896-21.40656*(r/R),
> r<=6161, 30.78765-23.25415*(r/R),
> r<=6251, 25.41389-17.69722*(r/R),
> r<=6336, 8.78541-0.74953*(r/R),
> r<=6351, 6.5,
> r<=7371, 5.8):
> 
# Below are the same layers as above, just split into separate functions.
> v1 := r -> 11.24094 - 4.09689*(r/R)^2;

                                                       2
                                                      r
                       v1 := r -> 11.24094 - 4.09689 ----
                                                       2
                                                      R
> v2 := r -> 10.03904 + 3.75665*(r/R)-13.67046*(r/R)^2;

                                                               2
                                                              r
                v2 := r -> 10.03904 + 3.75665 r/R - 13.67046 ----
                                                               2
                                                              R
> v3 := r -> 14.49470-1.47089*(r/R);

                        v3 := r -> 14.49470 - 1.47089 r/R
> v4:= r ->  25.1486-41.1538*(r/R)+51.9932*(r/R)^2-26.6083*(r/R)^3;

                                                      2              3
                                                     r              r
         v4 := r -> 25.1486 - 41.1538 r/R + 51.9932 ---- - 26.6083 ----
                                                      2              3
                                                     R              R
> v5:= r ->  25.96984-16.93412*(r/R);

                       v5 := r -> 25.96984 - 16.93412 r/R
> v6:= r ->  29.38896-21.40656*(r/R);

                       v6 := r -> 29.38896 - 21.40656 r/R
> v7:= r ->  30.78765-23.25415*(r/R);

                       v7 := r -> 30.78765 - 23.25415 r/R
> v8:= r ->  25.41389-17.69722*(r/R);

                       v8 := r -> 25.41389 - 17.69722 r/R
> v9:= r ->  8.78541-0.74953*(r/R);

                         v9 := r -> 8.78541 - .74953 r/R
> v10:= r ->  6.5;

                                   v10 := 6.5
> v11:= r ->  5.8;

                                   v11 := 5.8
--------------------------------------------------------------------------------
# Now integrate through each layer, multiplying by 2 for down and back up.
> t1 := 2*evalf(Int (1.0/v1(r), r=0..1217.1),10);

                                t1 := 217.5155732
> t2 := 2*evalf(Int (1.0/v2(r), r=1217.1..3482),10);

                                t2 := 483.2913642
> t3 := 2*evalf(Int (1.0/v3(r), r=3482..3631),10);

                                t3 := 21.79383122
> t4 := 2*evalf(Int (1.0/v4(r), r=3631..5611),10);

                                t4 := 319.1498456
> t5 := 2*evalf(Int (1.0/v5(r), r=5611..5711),10);

                                t5 := 18.31105897
> t6 := 2*evalf(Int (1.0/v6(r), r=5711..5961),10);

                                t6 := 51.15620824
> t7 := 2*evalf(Int (1.0/v7(r), r=5961..6161),10);

                                t7 := 46.19005626
> t8 := 2*evalf(Int (1.0/v8(r), r=6161..6251),10);

                                t8 := 22.02005600
> t9 := 2*evalf(Int (1.0/v9(r), r=6251..6336),10);

                                t9 := 21.13114624
> t10 := 2*evalf(Int (1.0/v10(r), r=6336..6351),10);

                               t10 := 4.615384614
> t11 := 2*evalf(Int (1.0/v11(r), r=6351..6371),10);

                               t11 := 6.896551724
# Sum these up and we get the time for PKIKP at 180 degrees. ttimes predicts 1212.12, while taup_time
# predicts 1212.08
> t := t1+t2+t3+t4+t5+t6+t7+t8+t9+t10+t11;

                                t := 1212.071076
--------------------------------------------------------------------------------
> 
