|
64 | 64 |
|
65 | 65 | # Transform derivative
|
66 | 66 | x = Point(2.0,1.0)
|
67 |
| - x_gn = Point(GradientNumber(2.0, (1.0,0.0)), GradientNumber(1.0, (0.0,1.0))) |
| 67 | + x_gn = Point(Dual(2.0, (1.0,0.0)), Dual(1.0, (0.0,1.0))) |
68 | 68 | x2_gn = transform(trans, x_gn)
|
69 |
| - m_gn = @fsa [x2_gn[1].partials.data[1] x2_gn[1].partials.data[2]; |
70 |
| - x2_gn[2].partials.data[1] x2_gn[2].partials.data[2] ] |
| 69 | + m_gn = @fsa [partials(x2_gn[1], 1) partials(x2_gn[1], 2); |
| 70 | + partials(x2_gn[2], 1) partials(x2_gn[2], 2) ] |
71 | 71 | m = transform_deriv(trans, x)
|
72 | 72 | @test m ≈ m_gn
|
73 | 73 |
|
74 | 74 | # Transform parameter derivative
|
75 |
| - trans_gn = Rotation2D(GradientNumber(1.0, (1.0))) |
| 75 | + trans_gn = Rotation2D(Dual(1.0, (1.0))) |
76 | 76 | x = Point(2.0,1.0)
|
77 | 77 | x2_gn = transform(trans_gn, x)
|
78 |
| - m_gn = Mat(x2_gn[1].partials.data[1], x2_gn[2].partials.data[1]) |
| 78 | + m_gn = Mat(partials(x2_gn[1], 1), partials(x2_gn[2], 1)) |
79 | 79 | m = transform_deriv_params(trans, x)
|
80 | 80 | @test m ≈ m_gn
|
81 | 81 | end
|
|
117 | 117 | y = transform(trans, x)
|
118 | 118 | @test y == R * Vec(1.0, 2.0, 3.0)
|
119 | 119 |
|
120 |
| - x_gn = Point(GradientNumber(1.0,(1.,0.,0.)), GradientNumber(2.0,(0.,1.,0.)), GradientNumber(3.0,(0.,0.,1.))) |
| 120 | + x_gn = Point(Dual(1.0,(1.,0.,0.)), Dual(2.0,(0.,1.,0.)), Dual(3.0,(0.,0.,1.))) |
121 | 121 | y_gn = transform(trans, x_gn)
|
122 |
| - M_gn = Mat{3,3,Float64}(vcat(ntuple(i->[y_gn[i].partials.data[j] for j = 1:3].', 3)...)) |
| 122 | + M_gn = Mat{3,3,Float64}(vcat(ntuple(i->[partials(y_gn[i], j) for j = 1:3].', 3)...)) |
123 | 123 | M = transform_deriv(trans, x)
|
124 | 124 | @test M ≈ M_gn
|
125 | 125 |
|
126 |
| - g11 = GradientNumber(R[1,1],(1.,0.,0.,0.,0.,0.,0.,0.,0.)) |
127 |
| - g12 = GradientNumber(R[1,2],(0.,1.,0.,0.,0.,0.,0.,0.,0.)) |
128 |
| - g13 = GradientNumber(R[1,3],(0.,0.,1.,0.,0.,0.,0.,0.,0.)) |
129 |
| - g21 = GradientNumber(R[2,1],(0.,0.,0.,1.,0.,0.,0.,0.,0.)) |
130 |
| - g22 = GradientNumber(R[2,2],(0.,0.,0.,0.,1.,0.,0.,0.,0.)) |
131 |
| - g23 = GradientNumber(R[2,3],(0.,0.,0.,0.,0.,1.,0.,0.,0.)) |
132 |
| - g31 = GradientNumber(R[3,1],(0.,0.,0.,0.,0.,0.,1.,0.,0.)) |
133 |
| - g32 = GradientNumber(R[3,2],(0.,0.,0.,0.,0.,0.,0.,1.,0.)) |
134 |
| - g33 = GradientNumber(R[3,3],(0.,0.,0.,0.,0.,0.,0.,0.,1.)) |
| 126 | + g11 = Dual(R[1,1],(1.,0.,0.,0.,0.,0.,0.,0.,0.)) |
| 127 | + g12 = Dual(R[1,2],(0.,1.,0.,0.,0.,0.,0.,0.,0.)) |
| 128 | + g13 = Dual(R[1,3],(0.,0.,1.,0.,0.,0.,0.,0.,0.)) |
| 129 | + g21 = Dual(R[2,1],(0.,0.,0.,1.,0.,0.,0.,0.,0.)) |
| 130 | + g22 = Dual(R[2,2],(0.,0.,0.,0.,1.,0.,0.,0.,0.)) |
| 131 | + g23 = Dual(R[2,3],(0.,0.,0.,0.,0.,1.,0.,0.,0.)) |
| 132 | + g31 = Dual(R[3,1],(0.,0.,0.,0.,0.,0.,1.,0.,0.)) |
| 133 | + g32 = Dual(R[3,2],(0.,0.,0.,0.,0.,0.,0.,1.,0.)) |
| 134 | + g33 = Dual(R[3,3],(0.,0.,0.,0.,0.,0.,0.,0.,1.)) |
135 | 135 |
|
136 | 136 | G = @fsa [g11 g12 g13;
|
137 | 137 | g21 g22 g23;
|
|
140 | 140 | trans_gn = Rotation(G)
|
141 | 141 | y_gn = transform(trans_gn, x)
|
142 | 142 |
|
143 |
| - M_gn = Mat{3,9,Float64}(vcat(ntuple(i->[y_gn[i].partials.data[j] for j = 1:9].', 3)...)) |
| 143 | + M_gn = Mat{3,9,Float64}(vcat(ntuple(i->[partials(y_gn[i], j) for j = 1:9].', 3)...)) |
144 | 144 | M = transform_deriv_params(trans, x)
|
145 | 145 | @test M ≈ M_gn
|
146 | 146 | end
|
|
159 | 159 | y = transform(trans, x)
|
160 | 160 | @test y ≈ Point(3.439024390243902,-1.1463414634146332,0.9268292682926829)
|
161 | 161 |
|
162 |
| - x_gn = Point(GradientNumber(1.0,(1.,0.,0.)), GradientNumber(2.0,(0.,1.,0.)), GradientNumber(3.0,(0.,0.,1.))) |
| 162 | + x_gn = Point(Dual(1.0,(1.,0.,0.)), Dual(2.0,(0.,1.,0.)), Dual(3.0,(0.,0.,1.))) |
163 | 163 | y_gn = transform(trans, x_gn)
|
164 |
| - M_gn = Mat{3,3,Float64}(vcat(ntuple(i->[y_gn[i].partials.data[j] for j = 1:3].', 3)...)) |
| 164 | + M_gn = Mat{3,3,Float64}(vcat(ntuple(i->[partials(y_gn[i], j) for j = 1:3].', 3)...)) |
165 | 165 | M = transform_deriv(trans, x)
|
166 | 166 | @test M ≈ M_gn
|
167 | 167 |
|
168 |
| - v_gn = [GradientNumber(v[1],(1.,0.,0.,0.)), GradientNumber(v[2],(0.,1.,0.,0.)), GradientNumber(v[3],(0.,0.,1.,0.)), GradientNumber(v[4],(0.,0.,0.,1.))] |
| 168 | + v_gn = [Dual(v[1],(1.,0.,0.,0.)), Dual(v[2],(0.,1.,0.,0.)), Dual(v[3],(0.,0.,1.,0.)), Dual(v[4],(0.,0.,0.,1.))] |
169 | 169 | q_gn = Quaternion(v_gn[1],v_gn[2],v_gn[3],v_gn[4],true)
|
170 | 170 | trans_gn = Rotation(q_gn)
|
171 | 171 | y_gn = transform(trans_gn,x)
|
172 |
| - M_gn = Mat{3,4,Float64}(vcat(ntuple(i->[y_gn[i].partials.data[j] for j = 1:4].', 3)...)) |
| 172 | + M_gn = Mat{3,4,Float64}(vcat(ntuple(i->[partials(y_gn[i], j) for j = 1:4].', 3)...)) |
173 | 173 | M = transform_deriv_params(trans, x)
|
174 | 174 | # Project both to tangent plane of normalized quaternions (there seems to be a change in definition...)
|
175 | 175 | proj = Mat{4,4,Float64}(eye(4) - v*v')
|
|
190 | 190 | y = transform(trans, x)
|
191 | 191 | @test y == Point(0.9984766744283545,2.1054173473736495,2.92750100324502)
|
192 | 192 |
|
193 |
| - x_gn = Point(GradientNumber(1.0,(1.,0.,0.)), GradientNumber(2.0,(0.,1.,0.)), GradientNumber(3.0,(0.,0.,1.))) |
| 193 | + x_gn = Point(Dual(1.0,(1.,0.,0.)), Dual(2.0,(0.,1.,0.)), Dual(3.0,(0.,0.,1.))) |
194 | 194 | y_gn = transform(trans, x_gn)
|
195 |
| - M_gn = Mat{3,3,Float64}(vcat(ntuple(i->[y_gn[i].partials.data[j] for j = 1:3].', 3)...)) |
| 195 | + M_gn = Mat{3,3,Float64}(vcat(ntuple(i->[partials(y_gn[i], j) for j = 1:3].', 3)...)) |
196 | 196 | M = transform_deriv(trans, x)
|
197 | 197 | @test M ≈ M_gn
|
198 | 198 |
|
|
222 | 222 |
|
223 | 223 | # Transform derivative
|
224 | 224 | x = Point(2.0,1.0,3.0)
|
225 |
| - x_gn = Point(GradientNumber(2.0, (1.0,0.0,0.0)), GradientNumber(1.0, (0.0,1.0,0.0)), GradientNumber(3.0, (0.0,0.0,1.0))) |
| 225 | + x_gn = Point(Dual(2.0, (1.0,0.0,0.0)), Dual(1.0, (0.0,1.0,0.0)), Dual(3.0, (0.0,0.0,1.0))) |
226 | 226 | x2_gn = transform(trans, x_gn)
|
227 |
| - m_gn = @fsa [x2_gn[1].partials.data[1] x2_gn[1].partials.data[2] x2_gn[1].partials.data[3]; |
228 |
| - x2_gn[2].partials.data[1] x2_gn[2].partials.data[2] x2_gn[2].partials.data[3]; |
229 |
| - x2_gn[3].partials.data[1] x2_gn[3].partials.data[2] x2_gn[3].partials.data[3] ] |
| 227 | + m_gn = @fsa [partials(x2_gn[1], 1) partials(x2_gn[1], 2) partials(x2_gn[1], 3); |
| 228 | + partials(x2_gn[2], 1) partials(x2_gn[2], 2) partials(x2_gn[2], 3); |
| 229 | + partials(x2_gn[3], 1) partials(x2_gn[3], 2) partials(x2_gn[3], 3) ] |
230 | 230 | m = transform_deriv(trans, x)
|
231 | 231 | @test m ≈ m_gn
|
232 | 232 |
|
233 | 233 | # Transform parameter derivative
|
234 |
| - trans_gn = RotationXY(GradientNumber(1.0, (1.0))) |
| 234 | + trans_gn = RotationXY(Dual(1.0, (1.0))) |
235 | 235 | x = Point(2.0,1.0,3.0)
|
236 | 236 | x2_gn = transform(trans_gn, x)
|
237 |
| - m_gn = Mat(x2_gn[1].partials.data[1], x2_gn[2].partials.data[1], x2_gn[3].partials.data[1]) |
| 237 | + m_gn = Mat(partials(x2_gn[1], 1), partials(x2_gn[2], 1), partials(x2_gn[3], 1)) |
238 | 238 | m = transform_deriv_params(trans, x)
|
239 | 239 | @test m ≈ m_gn
|
240 | 240 |
|
|
260 | 260 |
|
261 | 261 | # Transform derivative
|
262 | 262 | x = Point(2.0,1.0,3.0)
|
263 |
| - x_gn = Point(GradientNumber(2.0, (1.0,0.0,0.0)), GradientNumber(1.0, (0.0,1.0,0.0)), GradientNumber(3.0, (0.0,0.0,1.0))) |
| 263 | + x_gn = Point(Dual(2.0, (1.0,0.0,0.0)), Dual(1.0, (0.0,1.0,0.0)), Dual(3.0, (0.0,0.0,1.0))) |
264 | 264 | x2_gn = transform(trans, x_gn)
|
265 |
| - m_gn = @fsa [x2_gn[1].partials.data[1] x2_gn[1].partials.data[2] x2_gn[1].partials.data[3]; |
266 |
| - x2_gn[2].partials.data[1] x2_gn[2].partials.data[2] x2_gn[2].partials.data[3]; |
267 |
| - x2_gn[3].partials.data[1] x2_gn[3].partials.data[2] x2_gn[3].partials.data[3] ] |
| 265 | + m_gn = @fsa [partials(x2_gn[1], 1) partials(x2_gn[1], 2) partials(x2_gn[1], 3); |
| 266 | + partials(x2_gn[2], 1) partials(x2_gn[2], 2) partials(x2_gn[2], 3); |
| 267 | + partials(x2_gn[3], 1) partials(x2_gn[3], 2) partials(x2_gn[3], 3) ] |
268 | 268 | m = transform_deriv(trans, x)
|
269 | 269 | @test m ≈ m_gn
|
270 | 270 |
|
271 | 271 | # Transform parameter derivative
|
272 |
| - trans_gn = RotationYZ(GradientNumber(1.0, (1.0))) |
| 272 | + trans_gn = RotationYZ(Dual(1.0, (1.0))) |
273 | 273 | x = Point(2.0,1.0,3.0)
|
274 | 274 | x2_gn = transform(trans_gn, x)
|
275 |
| - m_gn = Mat(x2_gn[1].partials.data[1], x2_gn[2].partials.data[1], x2_gn[3].partials.data[1]) |
| 275 | + m_gn = Mat(partials(x2_gn[1], 1), partials(x2_gn[2], 1), partials(x2_gn[3], 1)) |
276 | 276 | m = transform_deriv_params(trans, x)
|
277 | 277 | @test m ≈ m_gn
|
278 | 278 |
|
|
298 | 298 |
|
299 | 299 | # Transform derivative
|
300 | 300 | x = Point(2.0,1.0,3.0)
|
301 |
| - x_gn = Point(GradientNumber(2.0, (1.0,0.0,0.0)), GradientNumber(1.0, (0.0,1.0,0.0)), GradientNumber(3.0, (0.0,0.0,1.0))) |
| 301 | + x_gn = Point(Dual(2.0, (1.0,0.0,0.0)), Dual(1.0, (0.0,1.0,0.0)), Dual(3.0, (0.0,0.0,1.0))) |
302 | 302 | x2_gn = transform(trans, x_gn)
|
303 |
| - m_gn = @fsa [x2_gn[1].partials.data[1] x2_gn[1].partials.data[2] x2_gn[1].partials.data[3]; |
304 |
| - x2_gn[2].partials.data[1] x2_gn[2].partials.data[2] x2_gn[2].partials.data[3]; |
305 |
| - x2_gn[3].partials.data[1] x2_gn[3].partials.data[2] x2_gn[3].partials.data[3] ] |
| 303 | + m_gn = @fsa [partials(x2_gn[1], 1) partials(x2_gn[1], 2) partials(x2_gn[1], 3); |
| 304 | + partials(x2_gn[2], 1) partials(x2_gn[2], 2) partials(x2_gn[2], 3); |
| 305 | + partials(x2_gn[3], 1) partials(x2_gn[3], 2) partials(x2_gn[3], 3) ] |
306 | 306 | m = transform_deriv(trans, x)
|
307 | 307 | @test m ≈ m_gn
|
308 | 308 |
|
309 | 309 | # Transform parameter derivative
|
310 |
| - trans_gn = RotationZX(GradientNumber(1.0, (1.0))) |
| 310 | + trans_gn = RotationZX(Dual(1.0, (1.0))) |
311 | 311 | x = Point(2.0,1.0,3.0)
|
312 | 312 | x2_gn = transform(trans_gn, x)
|
313 |
| - m_gn = Mat(x2_gn[1].partials.data[1], x2_gn[2].partials.data[1], x2_gn[3].partials.data[1]) |
| 313 | + m_gn = Mat(partials(x2_gn[1], 1), partials(x2_gn[2], 1), partials(x2_gn[3], 1)) |
314 | 314 | m = transform_deriv_params(trans, x)
|
315 | 315 | @test m ≈ m_gn
|
316 | 316 | end
|
|
330 | 330 |
|
331 | 331 | # Transform derivative
|
332 | 332 | x = Point(2.0,1.0,3.0)
|
333 |
| - x_gn = Point(GradientNumber(2.0, (1.0,0.0,0.0)), GradientNumber(1.0, (0.0,1.0,0.0)), GradientNumber(3.0, (0.0,0.0,1.0))) |
| 333 | + x_gn = Point(Dual(2.0, (1.0,0.0,0.0)), Dual(1.0, (0.0,1.0,0.0)), Dual(3.0, (0.0,0.0,1.0))) |
334 | 334 | x2_gn = transform(trans, x_gn)
|
335 |
| - m_gn = @fsa [x2_gn[1].partials.data[1] x2_gn[1].partials.data[2] x2_gn[1].partials.data[3]; |
336 |
| - x2_gn[2].partials.data[1] x2_gn[2].partials.data[2] x2_gn[2].partials.data[3]; |
337 |
| - x2_gn[3].partials.data[1] x2_gn[3].partials.data[2] x2_gn[3].partials.data[3] ] |
| 335 | + m_gn = @fsa [partials(x2_gn[1], 1) partials(x2_gn[1], 2) partials(x2_gn[1], 3); |
| 336 | + partials(x2_gn[2], 1) partials(x2_gn[2], 2) partials(x2_gn[2], 3); |
| 337 | + partials(x2_gn[3], 1) partials(x2_gn[3], 2) partials(x2_gn[3], 3) ] |
338 | 338 | m = transform_deriv(trans, x)
|
339 | 339 | @test m ≈ m_gn
|
340 | 340 |
|
341 | 341 | # Transform parameter derivative
|
342 | 342 |
|
343 |
| - trans_gn = euler_rotation(GradientNumber(0.1, (1.0, 0.0, 0.0)), GradientNumber(0.2, (0.0, 1.0, 0.0)), GradientNumber(0.3, (0.0, 0.0, 1.0))) |
| 343 | + trans_gn = euler_rotation(Dual(0.1, (1.0, 0.0, 0.0)), Dual(0.2, (0.0, 1.0, 0.0)), Dual(0.3, (0.0, 0.0, 1.0))) |
344 | 344 | x = Point(2.0,1.0,3.0)
|
345 | 345 | x2_gn = transform(trans_gn, x)
|
346 |
| - m_gn = @fsa [x2_gn[1].partials.data[1] x2_gn[1].partials.data[2] x2_gn[1].partials.data[3]; |
347 |
| - x2_gn[2].partials.data[1] x2_gn[2].partials.data[2] x2_gn[2].partials.data[3]; |
348 |
| - x2_gn[3].partials.data[1] x2_gn[3].partials.data[2] x2_gn[3].partials.data[3] ] |
| 346 | + m_gn = @fsa [partials(x2_gn[1], 1) partials(x2_gn[1], 2) partials(x2_gn[1], 3); |
| 347 | + partials(x2_gn[2], 1) partials(x2_gn[2], 2) partials(x2_gn[2], 3); |
| 348 | + partials(x2_gn[3], 1) partials(x2_gn[3], 2) partials(x2_gn[3], 3)] |
349 | 349 | m = transform_deriv_params(trans, x)
|
350 | 350 | @test m ≈ m_gn
|
351 | 351 |
|
|
0 commit comments