@@ -71,13 +71,13 @@ def run(n: Int) = {
7171 val sun = makeBody(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0)
7272
7373 def createBodies(): Array[Body] = {
74- val bodies = allocate [Body](5)
74+ val bodies = unsafeAllocate [Body](5)
7575
76- bodies.unsafeSet (0, sun);
77- bodies.unsafeSet (1, jupiter);
78- bodies.unsafeSet (2, saturn);
79- bodies.unsafeSet (3, uranus);
80- bodies.unsafeSet (4, neptune);
76+ bodies.set (0, sun);
77+ bodies.set (1, jupiter);
78+ bodies.set (2, saturn);
79+ bodies.set (3, uranus);
80+ bodies.set (4, neptune);
8181
8282 var px = 0.0;
8383 var py = 0.0;
@@ -97,16 +97,16 @@ def run(n: Int) = {
9797 0.0 - (pz / SOLAR_MASS),
9898 body.mass)
9999
100- bodies.unsafeSet (0, sun.offsetMomentum(px, py, pz))
100+ bodies.set (0, sun.offsetMomentum(px, py, pz))
101101
102102 bodies
103103 }
104104
105105 def advance(bodies: Array[Body], dt: Double) = {
106106 each(0, bodies.size) { i =>
107107 each(i + 1, bodies.size) { j =>
108- val iBody = bodies.unsafeGet (i);
109- val jBody = bodies.unsafeGet (j);
108+ val iBody = bodies.get (i);
109+ val jBody = bodies.get (j);
110110
111111 val dx = iBody.x - jBody.x;
112112 val dy = iBody.y - jBody.y;
@@ -116,15 +116,15 @@ def run(n: Int) = {
116116 val distance = sqrt(dSquared);
117117 val mag = dt / (dSquared * distance);
118118
119- bodies.unsafeSet (i, Body(
119+ bodies.set (i, Body(
120120 iBody.x, iBody.y, iBody.z,
121121 iBody.vx - dx * jBody.mass * mag,
122122 iBody.vy - dy * jBody.mass * mag,
123123 iBody.vz - dz * jBody.mass * mag,
124124 iBody.mass
125125 ));
126126
127- bodies.unsafeSet (j, Body(
127+ bodies.set (j, Body(
128128 jBody.x, jBody.y, jBody.z,
129129 jBody.vx + dx * iBody.mass * mag,
130130 jBody.vy + dy * iBody.mass * mag,
@@ -135,8 +135,8 @@ def run(n: Int) = {
135135 }
136136
137137 each(0, bodies.size) { i =>
138- val body = bodies.unsafeGet (i);
139- bodies.unsafeSet (i, Body(
138+ val body = bodies.get (i);
139+ bodies.set (i, Body(
140140 body.x + dt * body.vx,
141141 body.y + dt * body.vy,
142142 body.z + dt * body.vz,
@@ -151,11 +151,11 @@ def run(n: Int) = {
151151 def energy(bodies: Array[Body]): Double = {
152152 var e = 0.0;
153153 each(0, bodies.size()){ i =>
154- val iBody = bodies.unsafeGet (i);
154+ val iBody = bodies.get (i);
155155 e = e + 0.5 * iBody.mass * (iBody.vx * iBody.vx + iBody.vy * iBody.vy + iBody.vz * iBody.vz);
156156
157157 each(i + 1, bodies.size){ j =>
158- val jBody = bodies.unsafeGet (j);
158+ val jBody = bodies.get (j);
159159 val dx = iBody.x - jBody.x;
160160 val dy = iBody.y - jBody.y;
161161 val dz = iBody.z - jBody.z;
0 commit comments