fresnel_test.cpp
Go to the documentation of this file.
1 /*********************************************************************
2 * Copyright (c) 2017 Robert Bosch GmbH.
3 * All rights reserved.
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 * *********************************************************************/
17 
18 #include <cmath>
19 #include <gtest/gtest.h>
20 
22 
23 using namespace std;
24 using namespace steering;
25 
26 #define EPS_FRESNEL 1e-14
27 
28 // Comparison with values from scipy.special.fresnel
29 TEST(Fresnel, fresnel)
30 {
31  double fresnel_s, fresnel_c;
32 
33  fresnel(-40.0, fresnel_s, fresnel_c);
34  EXPECT_LE(fabs(fresnel_s - -0.4920422537902731), EPS_FRESNEL);
35  EXPECT_LE(fabs(fresnel_c - -0.4999984168574456), EPS_FRESNEL);
36 
37  fresnel(-39.5, fresnel_s, fresnel_c);
38  EXPECT_LE(fabs(fresnel_s - -0.49255430877943795), EPS_FRESNEL);
39  EXPECT_LE(fabs(fresnel_c - -0.5030823268038184), EPS_FRESNEL);
40 
41  fresnel(-39.0, fresnel_s, fresnel_c);
42  EXPECT_LE(fabs(fresnel_s - -0.49999829192809686), EPS_FRESNEL);
43  EXPECT_LE(fabs(fresnel_c - -0.5081617908810524), EPS_FRESNEL);
44 
45  fresnel(-38.5, fresnel_s, fresnel_c);
46  EXPECT_LE(fabs(fresnel_s - -0.5076391196617077), EPS_FRESNEL);
47  EXPECT_LE(fabs(fresnel_c - -0.496837694806001), EPS_FRESNEL);
48 
49  fresnel(-38.0, fresnel_s, fresnel_c);
50  EXPECT_LE(fabs(fresnel_s - -0.49162342526889974), EPS_FRESNEL);
51  EXPECT_LE(fabs(fresnel_c - -0.499998153500694), EPS_FRESNEL);
52 
53  fresnel(-37.5, fresnel_s, fresnel_c);
54  EXPECT_LE(fabs(fresnel_s - -0.5078428670985601), EPS_FRESNEL);
55  EXPECT_LE(fabs(fresnel_c - -0.49675345773238233), EPS_FRESNEL);
56 
57  fresnel(-37.0, fresnel_s, fresnel_c);
58  EXPECT_LE(fabs(fresnel_s - -0.49999799970186465), EPS_FRESNEL);
59  EXPECT_LE(fabs(fresnel_c - -0.5086029685015766), EPS_FRESNEL);
60 
61  fresnel(-36.5, fresnel_s, fresnel_c);
62  EXPECT_LE(fabs(fresnel_s - -0.49194221801222643), EPS_FRESNEL);
63  EXPECT_LE(fabs(fresnel_c - -0.5033353872735516), EPS_FRESNEL);
64 
65  fresnel(-36.0, fresnel_s, fresnel_c);
66  EXPECT_LE(fabs(fresnel_s - -0.4911580603172578), EPS_FRESNEL);
67  EXPECT_LE(fabs(fresnel_c - -0.4999978283373622), EPS_FRESNEL);
68 
69  fresnel(-35.5, fresnel_s, fresnel_c);
70  EXPECT_LE(fabs(fresnel_s - -0.491715191566429), EPS_FRESNEL);
71  EXPECT_LE(fabs(fresnel_c - -0.5034292286980901), EPS_FRESNEL);
72 
73  fresnel(-35.0, fresnel_s, fresnel_c);
74  EXPECT_LE(fabs(fresnel_s - -0.49999763682609794), EPS_FRESNEL);
75  EXPECT_LE(fabs(fresnel_c - -0.5090945663345068), EPS_FRESNEL);
76 
77  fresnel(-34.5, fresnel_s, fresnel_c);
78  EXPECT_LE(fabs(fresnel_s - -0.5085250000581694), EPS_FRESNEL);
79  EXPECT_LE(fabs(fresnel_c - -0.4964715000692896), EPS_FRESNEL);
80 
81  fresnel(-34.0, fresnel_s, fresnel_c);
82  EXPECT_LE(fabs(fresnel_s - -0.4906379466534976), EPS_FRESNEL);
83  EXPECT_LE(fabs(fresnel_c - -0.49999742211814463), EPS_FRESNEL);
84 
85  fresnel(-33.5, fresnel_s, fresnel_c);
86  EXPECT_LE(fabs(fresnel_s - -0.5087795363583066), EPS_FRESNEL);
87  EXPECT_LE(fabs(fresnel_c - -0.4963663140599485), EPS_FRESNEL);
88 
89  fresnel(-33.0, fresnel_s, fresnel_c);
90  EXPECT_LE(fabs(fresnel_s - -0.4999971805923199), EPS_FRESNEL);
91  EXPECT_LE(fabs(fresnel_c - -0.5096457516544846), EPS_FRESNEL);
92 
93  fresnel(-32.5, fresnel_s, fresnel_c);
94  EXPECT_LE(fabs(fresnel_s - -0.4909502579162105), EPS_FRESNEL);
95  EXPECT_LE(fabs(fresnel_c - -0.5037453311765392), EPS_FRESNEL);
96 
97  fresnel(-32.0, fresnel_s, fresnel_c);
98  EXPECT_LE(fabs(fresnel_s - -0.49005281894025865), EPS_FRESNEL);
99  EXPECT_LE(fabs(fresnel_c - -0.4999969079273435), EPS_FRESNEL);
100 
101  fresnel(-31.5, fresnel_s, fresnel_c);
102  EXPECT_LE(fabs(fresnel_s - -0.49066288968973953), EPS_FRESNEL);
103  EXPECT_LE(fabs(fresnel_c - -0.5038640489726605), EPS_FRESNEL);
104 
105  fresnel(-31.0, fresnel_s, fresnel_c);
106  EXPECT_LE(fabs(fresnel_s - -0.49999659893870957), EPS_FRESNEL);
107  EXPECT_LE(fabs(fresnel_c - -0.510268057465068), EPS_FRESNEL);
108 
109  fresnel(-30.5, fresnel_s, fresnel_c);
110  EXPECT_LE(fabs(fresnel_s - -0.5096433300548732), EPS_FRESNEL);
111  EXPECT_LE(fabs(fresnel_c - -0.4960094672174812), EPS_FRESNEL);
112 
113  fresnel(-30.0, fresnel_s, fresnel_c);
114  EXPECT_LE(fabs(fresnel_s - -0.4893896744421938), EPS_FRESNEL);
115  EXPECT_LE(fabs(fresnel_c - -0.4999962473706091), EPS_FRESNEL);
116 
117  fresnel(-29.5, fresnel_s, fresnel_c);
118  EXPECT_LE(fabs(fresnel_s - -0.5099703195139875), EPS_FRESNEL);
119  EXPECT_LE(fabs(fresnel_c - -0.49587443030573236), EPS_FRESNEL);
120 
121  fresnel(-29.0, fresnel_s, fresnel_c);
122  EXPECT_LE(fabs(fresnel_s - -0.4999958456285237), EPS_FRESNEL);
123  EXPECT_LE(fabs(fresnel_c - -0.5109761982547072), EPS_FRESNEL);
124 
125  fresnel(-28.5, fresnel_s, fresnel_c);
126  EXPECT_LE(fabs(fresnel_s - -0.4896797336947276), EPS_FRESNEL);
127  EXPECT_LE(fabs(fresnel_c - -0.5042700567697976), EPS_FRESNEL);
128 
129  fresnel(-28.0, fresnel_s, fresnel_c);
130  EXPECT_LE(fabs(fresnel_s - -0.4886317954009967), EPS_FRESNEL);
131  EXPECT_LE(fabs(fresnel_c - -0.4999953844327101), EPS_FRESNEL);
132 
133  fresnel(-27.5, fresnel_s, fresnel_c);
134  EXPECT_LE(fabs(fresnel_s - -0.4893043235007156), EPS_FRESNEL);
135  EXPECT_LE(fabs(fresnel_c - -0.5044250209259784), EPS_FRESNEL);
136 
137  fresnel(-27.0, fresnel_s, fresnel_c);
138  EXPECT_LE(fabs(fresnel_s - -0.4999948523652942), EPS_FRESNEL);
139  EXPECT_LE(fabs(fresnel_c - -0.5117892483008945), EPS_FRESNEL);
140 
141  fresnel(-26.5, fresnel_s, fresnel_c);
142  EXPECT_LE(fabs(fresnel_s - -0.5110994347652468), EPS_FRESNEL);
143  EXPECT_LE(fabs(fresnel_c - -0.49540835671456757), EPS_FRESNEL);
144 
145  fresnel(-26.0, fresnel_s, fresnel_c);
146  EXPECT_LE(fabs(fresnel_s - -0.4877573202131747), EPS_FRESNEL);
147  EXPECT_LE(fabs(fresnel_c - -0.49999423527272), EPS_FRESNEL);
148 
149  fresnel(-25.5, fresnel_s, fresnel_c);
150  EXPECT_LE(fabs(fresnel_s - -0.5115348786861477), EPS_FRESNEL);
151  EXPECT_LE(fabs(fresnel_c - -0.49522871078678943), EPS_FRESNEL);
152 
153  fresnel(-25.0, fresnel_s, fresnel_c);
154  EXPECT_LE(fabs(fresnel_s - -0.49999351546947596), EPS_FRESNEL);
155  EXPECT_LE(fabs(fresnel_c - -0.5127323855397702), EPS_FRESNEL);
156 
157  fresnel(-24.5, fresnel_s, fresnel_c);
158  EXPECT_LE(fabs(fresnel_s - -0.4879941087024924), EPS_FRESNEL);
159  EXPECT_LE(fabs(fresnel_c - -0.5049655456487026), EPS_FRESNEL);
160 
161  fresnel(-24.0, fresnel_s, fresnel_c);
162  EXPECT_LE(fabs(fresnel_s - -0.48673710022664085), EPS_FRESNEL);
163  EXPECT_LE(fabs(fresnel_c - -0.499992670665544), EPS_FRESNEL);
164 
165  fresnel(-23.5, fresnel_s, fresnel_c);
166  EXPECT_LE(fabs(fresnel_s - -0.4874829827132583), EPS_FRESNEL);
167  EXPECT_LE(fabs(fresnel_c - -0.5051762678838345), EPS_FRESNEL);
168 
169  fresnel(-23.0, fresnel_s, fresnel_c);
170  EXPECT_LE(fabs(fresnel_s - -0.4999916725048582), EPS_FRESNEL);
171  EXPECT_LE(fabs(fresnel_c - -0.5138395452365079), EPS_FRESNEL);
172 
173  fresnel(-22.5, fresnel_s, fresnel_c);
174  EXPECT_LE(fabs(fresnel_s - -0.5130736102268015), EPS_FRESNEL);
175  EXPECT_LE(fabs(fresnel_c - -0.4945943613060027), EPS_FRESNEL);
176 
177  fresnel(-22.0, fresnel_s, fresnel_c);
178  EXPECT_LE(fabs(fresnel_s - -0.4855313875836048), EPS_FRESNEL);
179  EXPECT_LE(fabs(fresnel_c - -0.4999904845486192), EPS_FRESNEL);
180 
181  fresnel(-21.5, fresnel_s, fresnel_c);
182  EXPECT_LE(fabs(fresnel_s - -0.5136820209670363), EPS_FRESNEL);
183  EXPECT_LE(fabs(fresnel_c - -0.49434375620493276), EPS_FRESNEL);
184 
185  fresnel(-21.0, fresnel_s, fresnel_c);
186  EXPECT_LE(fabs(fresnel_s - -0.4999890594544999), EPS_FRESNEL);
187  EXPECT_LE(fabs(fresnel_c - -0.5151575899376805), EPS_FRESNEL);
188 
189  fresnel(-20.5, fresnel_s, fresnel_c);
190  EXPECT_LE(fabs(fresnel_s - -0.48565015873667594), EPS_FRESNEL);
191  EXPECT_LE(fabs(fresnel_c - -0.5059311691275604), EPS_FRESNEL);
192 
193  fresnel(-20.0, fresnel_s, fresnel_c);
194  EXPECT_LE(fabs(fresnel_s - -0.4840845359259539), EPS_FRESNEL);
195  EXPECT_LE(fabs(fresnel_c - -0.49998733497234443), EPS_FRESNEL);
196 
197  fresnel(-19.5, fresnel_s, fresnel_c);
198  EXPECT_LE(fabs(fresnel_s - -0.4849137774794187), EPS_FRESNEL);
199  EXPECT_LE(fabs(fresnel_c - -0.5062341276891209), EPS_FRESNEL);
200 
201  fresnel(-19.0, fresnel_s, fresnel_c);
202  EXPECT_LE(fabs(fresnel_s - -0.4999852281670667), EPS_FRESNEL);
203  EXPECT_LE(fabs(fresnel_c - -0.5167531128300553), EPS_FRESNEL);
204 
205  fresnel(-18.5, fresnel_s, fresnel_c);
206  EXPECT_LE(fabs(fresnel_s - -0.5159022981370349), EPS_FRESNEL);
207  EXPECT_LE(fabs(fresnel_c - -0.4934303730848653), EPS_FRESNEL);
208 
209  fresnel(-18.0, fresnel_s, fresnel_c);
210  EXPECT_LE(fabs(fresnel_s - -0.48231616863711996), EPS_FRESNEL);
211  EXPECT_LE(fabs(fresnel_c - -0.49998262693469964), EPS_FRESNEL);
212 
213  fresnel(-17.5, fresnel_s, fresnel_c);
214  EXPECT_LE(fabs(fresnel_s - -0.5168117510006868), EPS_FRESNEL);
215  EXPECT_LE(fabs(fresnel_c - -0.4930568074654182), EPS_FRESNEL);
216 
217  fresnel(-17.0, fresnel_s, fresnel_c);
218  EXPECT_LE(fabs(fresnel_s - -0.4999793772969549), EPS_FRESNEL);
219  EXPECT_LE(fabs(fresnel_c - -0.5187240428109737), EPS_FRESNEL);
220 
221  fresnel(-16.5, fresnel_s, fresnel_c);
222  EXPECT_LE(fabs(fresnel_s - -0.4821684121023745), EPS_FRESNEL);
223  EXPECT_LE(fabs(fresnel_c - -0.5073616723760539), EPS_FRESNEL);
224 
225  fresnel(-16.0, fresnel_s, fresnel_c);
226  EXPECT_LE(fabs(fresnel_s - -0.48010572438090104), EPS_FRESNEL);
227  EXPECT_LE(fabs(fresnel_c - -0.4999752639565001), EPS_FRESNEL);
228 
229  fresnel(-15.5, fresnel_s, fresnel_c);
230  EXPECT_LE(fabs(fresnel_s - -0.4810167854210039), EPS_FRESNEL);
231  EXPECT_LE(fabs(fresnel_c - -0.5078336554052517), EPS_FRESNEL);
232 
233  fresnel(-15.0, fresnel_s, fresnel_c);
234  EXPECT_LE(fabs(fresnel_s - -0.4999699798097023), EPS_FRESNEL);
235  EXPECT_LE(fabs(fresnel_c - -0.5212205316743734), EPS_FRESNEL);
236 
237  fresnel(-14.5, fresnel_s, fresnel_c);
238  EXPECT_LE(fabs(fresnel_s - -0.5202939571560238), EPS_FRESNEL);
239  EXPECT_LE(fabs(fresnel_c - -0.49162993982669234), EPS_FRESNEL);
240 
241  fresnel(-14.0, fresnel_s, fresnel_c);
242  EXPECT_LE(fabs(fresnel_s - -0.4772637594418203), EPS_FRESNEL);
243  EXPECT_LE(fabs(fresnel_c - -0.49996307683096536), EPS_FRESNEL);
244 
245  fresnel(-13.5, fresnel_s, fresnel_c);
246  EXPECT_LE(fabs(fresnel_s - -0.521799262187777), EPS_FRESNEL);
247  EXPECT_LE(fabs(fresnel_c - -0.4910150221176157), EPS_FRESNEL);
248 
249  fresnel(-13.0, fresnel_s, fresnel_c);
250  EXPECT_LE(fabs(fresnel_s - -0.4999538844819125), EPS_FRESNEL);
251  EXPECT_LE(fabs(fresnel_c - -0.5244851153043584), EPS_FRESNEL);
252 
253  fresnel(-12.5, fresnel_s, fresnel_c);
254  EXPECT_LE(fabs(fresnel_s - -0.4764540427410991), EPS_FRESNEL);
255  EXPECT_LE(fabs(fresnel_c - -0.5096969076697003), EPS_FRESNEL);
256 
257  fresnel(-12.0, fresnel_s, fresnel_c);
258  EXPECT_LE(fabs(fresnel_s - -0.47347456491993545), EPS_FRESNEL);
259  EXPECT_LE(fabs(fresnel_c - -0.49994136935201117), EPS_FRESNEL);
260 
261  fresnel(-11.5, fresnel_s, fresnel_c);
262  EXPECT_LE(fabs(fresnel_s - -0.47440277911222917), EPS_FRESNEL);
263  EXPECT_LE(fabs(fresnel_c - -0.5105306129965809), EPS_FRESNEL);
264 
265  fresnel(-11.0, fresnel_s, fresnel_c);
266  EXPECT_LE(fabs(fresnel_s - -0.4999238837937511), EPS_FRESNEL);
267  EXPECT_LE(fabs(fresnel_c - -0.5289366617557965), EPS_FRESNEL);
268 
269  fresnel(-10.5, fresnel_s, fresnel_c);
270  EXPECT_LE(fabs(fresnel_s - -0.5280404079981299), EPS_FRESNEL);
271  EXPECT_LE(fabs(fresnel_c - -0.4884800073027095), EPS_FRESNEL);
272 
273  fresnel(-10.0, fresnel_s, fresnel_c);
274  EXPECT_LE(fabs(fresnel_s - -0.46816997858488224), EPS_FRESNEL);
275  EXPECT_LE(fabs(fresnel_c - -0.49989869420551575), EPS_FRESNEL);
276 
277  fresnel(-9.5, fresnel_s, fresnel_c);
278  EXPECT_LE(fabs(fresnel_s - -0.5309998491513985), EPS_FRESNEL);
279  EXPECT_LE(fabs(fresnel_c - -0.4872873310265677), EPS_FRESNEL);
280 
281  fresnel(-9.0, fresnel_s, fresnel_c);
282  EXPECT_LE(fabs(fresnel_s - -0.4998610456296846), EPS_FRESNEL);
283  EXPECT_LE(fabs(fresnel_c - -0.5353661274681198), EPS_FRESNEL);
284 
285  fresnel(-8.5, fresnel_s, fresnel_c);
286  EXPECT_LE(fabs(fresnel_s - -0.46534124898107443), EPS_FRESNEL);
287  EXPECT_LE(fabs(fresnel_c - -0.5141775985837332), EPS_FRESNEL);
288 
289  fresnel(-8.0, fresnel_s, fresnel_c);
290  EXPECT_LE(fabs(fresnel_s - -0.46021421439301446), EPS_FRESNEL);
291  EXPECT_LE(fabs(fresnel_c - -0.499802180377197), EPS_FRESNEL);
292 
293  fresnel(-7.5, fresnel_s, fresnel_c);
294  EXPECT_LE(fabs(fresnel_s - -0.4607012329468305), EPS_FRESNEL);
295  EXPECT_LE(fabs(fresnel_c - -0.5160182501523362), EPS_FRESNEL);
296 
297  fresnel(-7.0, fresnel_s, fresnel_c);
298  EXPECT_LE(fabs(fresnel_s - -0.4997047894534464), EPS_FRESNEL);
299  EXPECT_LE(fabs(fresnel_c - -0.5454670925469698), EPS_FRESNEL);
300 
301  fresnel(-6.5, fresnel_s, fresnel_c);
302  EXPECT_LE(fabs(fresnel_s - -0.5453764552432336), EPS_FRESNEL);
303  EXPECT_LE(fabs(fresnel_c - -0.48160345989096404), EPS_FRESNEL);
304 
305  fresnel(-6.0, fresnel_s, fresnel_c);
306  EXPECT_LE(fabs(fresnel_s - -0.4469607612369303), EPS_FRESNEL);
307  EXPECT_LE(fabs(fresnel_c - -0.499531467855501), EPS_FRESNEL);
308 
309  fresnel(-5.5, fresnel_s, fresnel_c);
310  EXPECT_LE(fabs(fresnel_s - -0.5536840627790217), EPS_FRESNEL);
311  EXPECT_LE(fabs(fresnel_c - -0.4784214149253144), EPS_FRESNEL);
312 
313  fresnel(-5.0, fresnel_s, fresnel_c);
314  EXPECT_LE(fabs(fresnel_s - -0.4991913819171169), EPS_FRESNEL);
315  EXPECT_LE(fabs(fresnel_c - -0.5636311887040122), EPS_FRESNEL);
316 
317  fresnel(-4.5, fresnel_s, fresnel_c);
318  EXPECT_LE(fabs(fresnel_s - -0.43427297504870355), EPS_FRESNEL);
319  EXPECT_LE(fabs(fresnel_c - -0.5260259150535386), EPS_FRESNEL);
320 
321  fresnel(-4.0, fresnel_s, fresnel_c);
322  EXPECT_LE(fabs(fresnel_s - -0.42051575424692844), EPS_FRESNEL);
323  EXPECT_LE(fabs(fresnel_c - -0.49842603303817756), EPS_FRESNEL);
324 
325  fresnel(-3.5, fresnel_s, fresnel_c);
326  EXPECT_LE(fabs(fresnel_s - -0.41524801197243744), EPS_FRESNEL);
327  EXPECT_LE(fabs(fresnel_c - -0.5325724350280007), EPS_FRESNEL);
328 
329  fresnel(-3.0, fresnel_s, fresnel_c);
330  EXPECT_LE(fabs(fresnel_s - -0.49631299896737496), EPS_FRESNEL);
331  EXPECT_LE(fabs(fresnel_c - -0.6057207892976857), EPS_FRESNEL);
332 
333  fresnel(-2.5, fresnel_s, fresnel_c);
334  EXPECT_LE(fabs(fresnel_s - -0.6191817558195929), EPS_FRESNEL);
335  EXPECT_LE(fabs(fresnel_c - -0.45741300964177706), EPS_FRESNEL);
336 
337  fresnel(-2.0, fresnel_s, fresnel_c);
338  EXPECT_LE(fabs(fresnel_s - -0.34341567836369824), EPS_FRESNEL);
339  EXPECT_LE(fabs(fresnel_c - -0.48825340607534073), EPS_FRESNEL);
340 
341  fresnel(-1.5, fresnel_s, fresnel_c);
342  EXPECT_LE(fabs(fresnel_s - -0.697504960082093), EPS_FRESNEL);
343  EXPECT_LE(fabs(fresnel_c - -0.44526117603982157), EPS_FRESNEL);
344 
345  fresnel(-1.0, fresnel_s, fresnel_c);
346  EXPECT_LE(fabs(fresnel_s - -0.4382591473903547), EPS_FRESNEL);
347  EXPECT_LE(fabs(fresnel_c - -0.779893400376823), EPS_FRESNEL);
348 
349  fresnel(-0.5, fresnel_s, fresnel_c);
350  EXPECT_LE(fabs(fresnel_s - -0.06473243285999929), EPS_FRESNEL);
351  EXPECT_LE(fabs(fresnel_c - -0.4923442258714464), EPS_FRESNEL);
352 
353  fresnel(0.0, fresnel_s, fresnel_c);
354  EXPECT_LE(fabs(fresnel_s - 0.0), EPS_FRESNEL);
355  EXPECT_LE(fabs(fresnel_c - 0.0), EPS_FRESNEL);
356 
357  fresnel(0.5, fresnel_s, fresnel_c);
358  EXPECT_LE(fabs(fresnel_s - 0.06473243285999929), EPS_FRESNEL);
359  EXPECT_LE(fabs(fresnel_c - 0.4923442258714464), EPS_FRESNEL);
360 
361  fresnel(1.0, fresnel_s, fresnel_c);
362  EXPECT_LE(fabs(fresnel_s - 0.4382591473903547), EPS_FRESNEL);
363  EXPECT_LE(fabs(fresnel_c - 0.779893400376823), EPS_FRESNEL);
364 
365  fresnel(1.5, fresnel_s, fresnel_c);
366  EXPECT_LE(fabs(fresnel_s - 0.697504960082093), EPS_FRESNEL);
367  EXPECT_LE(fabs(fresnel_c - 0.44526117603982157), EPS_FRESNEL);
368 
369  fresnel(2.0, fresnel_s, fresnel_c);
370  EXPECT_LE(fabs(fresnel_s - 0.34341567836369824), EPS_FRESNEL);
371  EXPECT_LE(fabs(fresnel_c - 0.48825340607534073), EPS_FRESNEL);
372 
373  fresnel(2.5, fresnel_s, fresnel_c);
374  EXPECT_LE(fabs(fresnel_s - 0.6191817558195929), EPS_FRESNEL);
375  EXPECT_LE(fabs(fresnel_c - 0.45741300964177706), EPS_FRESNEL);
376 
377  fresnel(3.0, fresnel_s, fresnel_c);
378  EXPECT_LE(fabs(fresnel_s - 0.49631299896737496), EPS_FRESNEL);
379  EXPECT_LE(fabs(fresnel_c - 0.6057207892976857), EPS_FRESNEL);
380 
381  fresnel(3.5, fresnel_s, fresnel_c);
382  EXPECT_LE(fabs(fresnel_s - 0.41524801197243744), EPS_FRESNEL);
383  EXPECT_LE(fabs(fresnel_c - 0.5325724350280007), EPS_FRESNEL);
384 
385  fresnel(4.0, fresnel_s, fresnel_c);
386  EXPECT_LE(fabs(fresnel_s - 0.42051575424692844), EPS_FRESNEL);
387  EXPECT_LE(fabs(fresnel_c - 0.49842603303817756), EPS_FRESNEL);
388 
389  fresnel(4.5, fresnel_s, fresnel_c);
390  EXPECT_LE(fabs(fresnel_s - 0.43427297504870355), EPS_FRESNEL);
391  EXPECT_LE(fabs(fresnel_c - 0.5260259150535386), EPS_FRESNEL);
392 
393  fresnel(5.0, fresnel_s, fresnel_c);
394  EXPECT_LE(fabs(fresnel_s - 0.4991913819171169), EPS_FRESNEL);
395  EXPECT_LE(fabs(fresnel_c - 0.5636311887040122), EPS_FRESNEL);
396 
397  fresnel(5.5, fresnel_s, fresnel_c);
398  EXPECT_LE(fabs(fresnel_s - 0.5536840627790217), EPS_FRESNEL);
399  EXPECT_LE(fabs(fresnel_c - 0.4784214149253144), EPS_FRESNEL);
400 
401  fresnel(6.0, fresnel_s, fresnel_c);
402  EXPECT_LE(fabs(fresnel_s - 0.4469607612369303), EPS_FRESNEL);
403  EXPECT_LE(fabs(fresnel_c - 0.499531467855501), EPS_FRESNEL);
404 
405  fresnel(6.5, fresnel_s, fresnel_c);
406  EXPECT_LE(fabs(fresnel_s - 0.5453764552432336), EPS_FRESNEL);
407  EXPECT_LE(fabs(fresnel_c - 0.48160345989096404), EPS_FRESNEL);
408 
409  fresnel(7.0, fresnel_s, fresnel_c);
410  EXPECT_LE(fabs(fresnel_s - 0.4997047894534464), EPS_FRESNEL);
411  EXPECT_LE(fabs(fresnel_c - 0.5454670925469698), EPS_FRESNEL);
412 
413  fresnel(7.5, fresnel_s, fresnel_c);
414  EXPECT_LE(fabs(fresnel_s - 0.4607012329468305), EPS_FRESNEL);
415  EXPECT_LE(fabs(fresnel_c - 0.5160182501523362), EPS_FRESNEL);
416 
417  fresnel(8.0, fresnel_s, fresnel_c);
418  EXPECT_LE(fabs(fresnel_s - 0.46021421439301446), EPS_FRESNEL);
419  EXPECT_LE(fabs(fresnel_c - 0.499802180377197), EPS_FRESNEL);
420 
421  fresnel(8.5, fresnel_s, fresnel_c);
422  EXPECT_LE(fabs(fresnel_s - 0.46534124898107443), EPS_FRESNEL);
423  EXPECT_LE(fabs(fresnel_c - 0.5141775985837332), EPS_FRESNEL);
424 
425  fresnel(9.0, fresnel_s, fresnel_c);
426  EXPECT_LE(fabs(fresnel_s - 0.4998610456296846), EPS_FRESNEL);
427  EXPECT_LE(fabs(fresnel_c - 0.5353661274681198), EPS_FRESNEL);
428 
429  fresnel(9.5, fresnel_s, fresnel_c);
430  EXPECT_LE(fabs(fresnel_s - 0.5309998491513985), EPS_FRESNEL);
431  EXPECT_LE(fabs(fresnel_c - 0.4872873310265677), EPS_FRESNEL);
432 
433  fresnel(10.0, fresnel_s, fresnel_c);
434  EXPECT_LE(fabs(fresnel_s - 0.46816997858488224), EPS_FRESNEL);
435  EXPECT_LE(fabs(fresnel_c - 0.49989869420551575), EPS_FRESNEL);
436 
437  fresnel(10.5, fresnel_s, fresnel_c);
438  EXPECT_LE(fabs(fresnel_s - 0.5280404079981299), EPS_FRESNEL);
439  EXPECT_LE(fabs(fresnel_c - 0.4884800073027095), EPS_FRESNEL);
440 
441  fresnel(11.0, fresnel_s, fresnel_c);
442  EXPECT_LE(fabs(fresnel_s - 0.4999238837937511), EPS_FRESNEL);
443  EXPECT_LE(fabs(fresnel_c - 0.5289366617557965), EPS_FRESNEL);
444 
445  fresnel(11.5, fresnel_s, fresnel_c);
446  EXPECT_LE(fabs(fresnel_s - 0.47440277911222917), EPS_FRESNEL);
447  EXPECT_LE(fabs(fresnel_c - 0.5105306129965809), EPS_FRESNEL);
448 
449  fresnel(12.0, fresnel_s, fresnel_c);
450  EXPECT_LE(fabs(fresnel_s - 0.47347456491993545), EPS_FRESNEL);
451  EXPECT_LE(fabs(fresnel_c - 0.49994136935201117), EPS_FRESNEL);
452 
453  fresnel(12.5, fresnel_s, fresnel_c);
454  EXPECT_LE(fabs(fresnel_s - 0.4764540427410991), EPS_FRESNEL);
455  EXPECT_LE(fabs(fresnel_c - 0.5096969076697003), EPS_FRESNEL);
456 
457  fresnel(13.0, fresnel_s, fresnel_c);
458  EXPECT_LE(fabs(fresnel_s - 0.4999538844819125), EPS_FRESNEL);
459  EXPECT_LE(fabs(fresnel_c - 0.5244851153043584), EPS_FRESNEL);
460 
461  fresnel(13.5, fresnel_s, fresnel_c);
462  EXPECT_LE(fabs(fresnel_s - 0.521799262187777), EPS_FRESNEL);
463  EXPECT_LE(fabs(fresnel_c - 0.4910150221176157), EPS_FRESNEL);
464 
465  fresnel(14.0, fresnel_s, fresnel_c);
466  EXPECT_LE(fabs(fresnel_s - 0.4772637594418203), EPS_FRESNEL);
467  EXPECT_LE(fabs(fresnel_c - 0.49996307683096536), EPS_FRESNEL);
468 
469  fresnel(14.5, fresnel_s, fresnel_c);
470  EXPECT_LE(fabs(fresnel_s - 0.5202939571560238), EPS_FRESNEL);
471  EXPECT_LE(fabs(fresnel_c - 0.49162993982669234), EPS_FRESNEL);
472 
473  fresnel(15.0, fresnel_s, fresnel_c);
474  EXPECT_LE(fabs(fresnel_s - 0.4999699798097023), EPS_FRESNEL);
475  EXPECT_LE(fabs(fresnel_c - 0.5212205316743734), EPS_FRESNEL);
476 
477  fresnel(15.5, fresnel_s, fresnel_c);
478  EXPECT_LE(fabs(fresnel_s - 0.4810167854210039), EPS_FRESNEL);
479  EXPECT_LE(fabs(fresnel_c - 0.5078336554052517), EPS_FRESNEL);
480 
481  fresnel(16.0, fresnel_s, fresnel_c);
482  EXPECT_LE(fabs(fresnel_s - 0.48010572438090104), EPS_FRESNEL);
483  EXPECT_LE(fabs(fresnel_c - 0.4999752639565001), EPS_FRESNEL);
484 
485  fresnel(16.5, fresnel_s, fresnel_c);
486  EXPECT_LE(fabs(fresnel_s - 0.4821684121023745), EPS_FRESNEL);
487  EXPECT_LE(fabs(fresnel_c - 0.5073616723760539), EPS_FRESNEL);
488 
489  fresnel(17.0, fresnel_s, fresnel_c);
490  EXPECT_LE(fabs(fresnel_s - 0.4999793772969549), EPS_FRESNEL);
491  EXPECT_LE(fabs(fresnel_c - 0.5187240428109737), EPS_FRESNEL);
492 
493  fresnel(17.5, fresnel_s, fresnel_c);
494  EXPECT_LE(fabs(fresnel_s - 0.5168117510006868), EPS_FRESNEL);
495  EXPECT_LE(fabs(fresnel_c - 0.4930568074654182), EPS_FRESNEL);
496 
497  fresnel(18.0, fresnel_s, fresnel_c);
498  EXPECT_LE(fabs(fresnel_s - 0.48231616863711996), EPS_FRESNEL);
499  EXPECT_LE(fabs(fresnel_c - 0.49998262693469964), EPS_FRESNEL);
500 
501  fresnel(18.5, fresnel_s, fresnel_c);
502  EXPECT_LE(fabs(fresnel_s - 0.5159022981370349), EPS_FRESNEL);
503  EXPECT_LE(fabs(fresnel_c - 0.4934303730848653), EPS_FRESNEL);
504 
505  fresnel(19.0, fresnel_s, fresnel_c);
506  EXPECT_LE(fabs(fresnel_s - 0.4999852281670667), EPS_FRESNEL);
507  EXPECT_LE(fabs(fresnel_c - 0.5167531128300553), EPS_FRESNEL);
508 
509  fresnel(19.5, fresnel_s, fresnel_c);
510  EXPECT_LE(fabs(fresnel_s - 0.4849137774794187), EPS_FRESNEL);
511  EXPECT_LE(fabs(fresnel_c - 0.5062341276891209), EPS_FRESNEL);
512 
513  fresnel(20.0, fresnel_s, fresnel_c);
514  EXPECT_LE(fabs(fresnel_s - 0.4840845359259539), EPS_FRESNEL);
515  EXPECT_LE(fabs(fresnel_c - 0.49998733497234443), EPS_FRESNEL);
516 
517  fresnel(20.5, fresnel_s, fresnel_c);
518  EXPECT_LE(fabs(fresnel_s - 0.48565015873667594), EPS_FRESNEL);
519  EXPECT_LE(fabs(fresnel_c - 0.5059311691275604), EPS_FRESNEL);
520 
521  fresnel(21.0, fresnel_s, fresnel_c);
522  EXPECT_LE(fabs(fresnel_s - 0.4999890594544999), EPS_FRESNEL);
523  EXPECT_LE(fabs(fresnel_c - 0.5151575899376805), EPS_FRESNEL);
524 
525  fresnel(21.5, fresnel_s, fresnel_c);
526  EXPECT_LE(fabs(fresnel_s - 0.5136820209670363), EPS_FRESNEL);
527  EXPECT_LE(fabs(fresnel_c - 0.49434375620493276), EPS_FRESNEL);
528 
529  fresnel(22.0, fresnel_s, fresnel_c);
530  EXPECT_LE(fabs(fresnel_s - 0.4855313875836048), EPS_FRESNEL);
531  EXPECT_LE(fabs(fresnel_c - 0.4999904845486192), EPS_FRESNEL);
532 
533  fresnel(22.5, fresnel_s, fresnel_c);
534  EXPECT_LE(fabs(fresnel_s - 0.5130736102268015), EPS_FRESNEL);
535  EXPECT_LE(fabs(fresnel_c - 0.4945943613060027), EPS_FRESNEL);
536 
537  fresnel(23.0, fresnel_s, fresnel_c);
538  EXPECT_LE(fabs(fresnel_s - 0.4999916725048582), EPS_FRESNEL);
539  EXPECT_LE(fabs(fresnel_c - 0.5138395452365079), EPS_FRESNEL);
540 
541  fresnel(23.5, fresnel_s, fresnel_c);
542  EXPECT_LE(fabs(fresnel_s - 0.4874829827132583), EPS_FRESNEL);
543  EXPECT_LE(fabs(fresnel_c - 0.5051762678838345), EPS_FRESNEL);
544 
545  fresnel(24.0, fresnel_s, fresnel_c);
546  EXPECT_LE(fabs(fresnel_s - 0.48673710022664085), EPS_FRESNEL);
547  EXPECT_LE(fabs(fresnel_c - 0.499992670665544), EPS_FRESNEL);
548 
549  fresnel(24.5, fresnel_s, fresnel_c);
550  EXPECT_LE(fabs(fresnel_s - 0.4879941087024924), EPS_FRESNEL);
551  EXPECT_LE(fabs(fresnel_c - 0.5049655456487026), EPS_FRESNEL);
552 
553  fresnel(25.0, fresnel_s, fresnel_c);
554  EXPECT_LE(fabs(fresnel_s - 0.49999351546947596), EPS_FRESNEL);
555  EXPECT_LE(fabs(fresnel_c - 0.5127323855397702), EPS_FRESNEL);
556 
557  fresnel(25.5, fresnel_s, fresnel_c);
558  EXPECT_LE(fabs(fresnel_s - 0.5115348786861477), EPS_FRESNEL);
559  EXPECT_LE(fabs(fresnel_c - 0.49522871078678943), EPS_FRESNEL);
560 
561  fresnel(26.0, fresnel_s, fresnel_c);
562  EXPECT_LE(fabs(fresnel_s - 0.4877573202131747), EPS_FRESNEL);
563  EXPECT_LE(fabs(fresnel_c - 0.49999423527272), EPS_FRESNEL);
564 
565  fresnel(26.5, fresnel_s, fresnel_c);
566  EXPECT_LE(fabs(fresnel_s - 0.5110994347652468), EPS_FRESNEL);
567  EXPECT_LE(fabs(fresnel_c - 0.49540835671456757), EPS_FRESNEL);
568 
569  fresnel(27.0, fresnel_s, fresnel_c);
570  EXPECT_LE(fabs(fresnel_s - 0.4999948523652942), EPS_FRESNEL);
571  EXPECT_LE(fabs(fresnel_c - 0.5117892483008945), EPS_FRESNEL);
572 
573  fresnel(27.5, fresnel_s, fresnel_c);
574  EXPECT_LE(fabs(fresnel_s - 0.4893043235007156), EPS_FRESNEL);
575  EXPECT_LE(fabs(fresnel_c - 0.5044250209259784), EPS_FRESNEL);
576 
577  fresnel(28.0, fresnel_s, fresnel_c);
578  EXPECT_LE(fabs(fresnel_s - 0.4886317954009967), EPS_FRESNEL);
579  EXPECT_LE(fabs(fresnel_c - 0.4999953844327101), EPS_FRESNEL);
580 
581  fresnel(28.5, fresnel_s, fresnel_c);
582  EXPECT_LE(fabs(fresnel_s - 0.4896797336947276), EPS_FRESNEL);
583  EXPECT_LE(fabs(fresnel_c - 0.5042700567697976), EPS_FRESNEL);
584 
585  fresnel(29.0, fresnel_s, fresnel_c);
586  EXPECT_LE(fabs(fresnel_s - 0.4999958456285237), EPS_FRESNEL);
587  EXPECT_LE(fabs(fresnel_c - 0.5109761982547072), EPS_FRESNEL);
588 
589  fresnel(29.5, fresnel_s, fresnel_c);
590  EXPECT_LE(fabs(fresnel_s - 0.5099703195139875), EPS_FRESNEL);
591  EXPECT_LE(fabs(fresnel_c - 0.49587443030573236), EPS_FRESNEL);
592 
593  fresnel(30.0, fresnel_s, fresnel_c);
594  EXPECT_LE(fabs(fresnel_s - 0.4893896744421938), EPS_FRESNEL);
595  EXPECT_LE(fabs(fresnel_c - 0.4999962473706091), EPS_FRESNEL);
596 
597  fresnel(30.5, fresnel_s, fresnel_c);
598  EXPECT_LE(fabs(fresnel_s - 0.5096433300548732), EPS_FRESNEL);
599  EXPECT_LE(fabs(fresnel_c - 0.4960094672174812), EPS_FRESNEL);
600 
601  fresnel(31.0, fresnel_s, fresnel_c);
602  EXPECT_LE(fabs(fresnel_s - 0.49999659893870957), EPS_FRESNEL);
603  EXPECT_LE(fabs(fresnel_c - 0.510268057465068), EPS_FRESNEL);
604 
605  fresnel(31.5, fresnel_s, fresnel_c);
606  EXPECT_LE(fabs(fresnel_s - 0.49066288968973953), EPS_FRESNEL);
607  EXPECT_LE(fabs(fresnel_c - 0.5038640489726605), EPS_FRESNEL);
608 
609  fresnel(32.0, fresnel_s, fresnel_c);
610  EXPECT_LE(fabs(fresnel_s - 0.49005281894025865), EPS_FRESNEL);
611  EXPECT_LE(fabs(fresnel_c - 0.4999969079273435), EPS_FRESNEL);
612 
613  fresnel(32.5, fresnel_s, fresnel_c);
614  EXPECT_LE(fabs(fresnel_s - 0.4909502579162105), EPS_FRESNEL);
615  EXPECT_LE(fabs(fresnel_c - 0.5037453311765392), EPS_FRESNEL);
616 
617  fresnel(33.0, fresnel_s, fresnel_c);
618  EXPECT_LE(fabs(fresnel_s - 0.4999971805923199), EPS_FRESNEL);
619  EXPECT_LE(fabs(fresnel_c - 0.5096457516544846), EPS_FRESNEL);
620 
621  fresnel(33.5, fresnel_s, fresnel_c);
622  EXPECT_LE(fabs(fresnel_s - 0.5087795363583066), EPS_FRESNEL);
623  EXPECT_LE(fabs(fresnel_c - 0.4963663140599485), EPS_FRESNEL);
624 
625  fresnel(34.0, fresnel_s, fresnel_c);
626  EXPECT_LE(fabs(fresnel_s - 0.4906379466534976), EPS_FRESNEL);
627  EXPECT_LE(fabs(fresnel_c - 0.49999742211814463), EPS_FRESNEL);
628 
629  fresnel(34.5, fresnel_s, fresnel_c);
630  EXPECT_LE(fabs(fresnel_s - 0.5085250000581694), EPS_FRESNEL);
631  EXPECT_LE(fabs(fresnel_c - 0.4964715000692896), EPS_FRESNEL);
632 
633  fresnel(35.0, fresnel_s, fresnel_c);
634  EXPECT_LE(fabs(fresnel_s - 0.49999763682609794), EPS_FRESNEL);
635  EXPECT_LE(fabs(fresnel_c - 0.5090945663345068), EPS_FRESNEL);
636 
637  fresnel(35.5, fresnel_s, fresnel_c);
638  EXPECT_LE(fabs(fresnel_s - 0.491715191566429), EPS_FRESNEL);
639  EXPECT_LE(fabs(fresnel_c - 0.5034292286980901), EPS_FRESNEL);
640 
641  fresnel(36.0, fresnel_s, fresnel_c);
642  EXPECT_LE(fabs(fresnel_s - 0.4911580603172578), EPS_FRESNEL);
643  EXPECT_LE(fabs(fresnel_c - 0.4999978283373622), EPS_FRESNEL);
644 
645  fresnel(36.5, fresnel_s, fresnel_c);
646  EXPECT_LE(fabs(fresnel_s - 0.49194221801222643), EPS_FRESNEL);
647  EXPECT_LE(fabs(fresnel_c - 0.5033353872735516), EPS_FRESNEL);
648 
649  fresnel(37.0, fresnel_s, fresnel_c);
650  EXPECT_LE(fabs(fresnel_s - 0.49999799970186465), EPS_FRESNEL);
651  EXPECT_LE(fabs(fresnel_c - 0.5086029685015766), EPS_FRESNEL);
652 
653  fresnel(37.5, fresnel_s, fresnel_c);
654  EXPECT_LE(fabs(fresnel_s - 0.5078428670985601), EPS_FRESNEL);
655  EXPECT_LE(fabs(fresnel_c - 0.49675345773238233), EPS_FRESNEL);
656 
657  fresnel(38.0, fresnel_s, fresnel_c);
658  EXPECT_LE(fabs(fresnel_s - 0.49162342526889974), EPS_FRESNEL);
659  EXPECT_LE(fabs(fresnel_c - 0.499998153500694), EPS_FRESNEL);
660 
661  fresnel(38.5, fresnel_s, fresnel_c);
662  EXPECT_LE(fabs(fresnel_s - 0.5076391196617077), EPS_FRESNEL);
663  EXPECT_LE(fabs(fresnel_c - 0.496837694806001), EPS_FRESNEL);
664 
665  fresnel(39.0, fresnel_s, fresnel_c);
666  EXPECT_LE(fabs(fresnel_s - 0.49999829192809686), EPS_FRESNEL);
667  EXPECT_LE(fabs(fresnel_c - 0.5081617908810524), EPS_FRESNEL);
668 
669  fresnel(39.5, fresnel_s, fresnel_c);
670  EXPECT_LE(fabs(fresnel_s - 0.49255430877943795), EPS_FRESNEL);
671  EXPECT_LE(fabs(fresnel_c - 0.5030823268038184), EPS_FRESNEL);
672 
673  fresnel(40.0, fresnel_s, fresnel_c);
674  EXPECT_LE(fabs(fresnel_s - 0.4920422537902731), EPS_FRESNEL);
675  EXPECT_LE(fabs(fresnel_c - 0.4999984168574456), EPS_FRESNEL);
676 
677  fresnel(40.5, fresnel_s, fresnel_c);
678  EXPECT_LE(fabs(fresnel_s - 0.4927381828482828), EPS_FRESNEL);
679  EXPECT_LE(fabs(fresnel_c - 0.5030062922561774), EPS_FRESNEL);
680 }
681 
682 int main(int argc, char** argv)
683 {
684  testing::InitGoogleTest(&argc, argv);
685  return RUN_ALL_TESTS();
686 }
main
int main(int argc, char **argv)
Definition: fresnel_test.cpp:682
steering::fresnel
void fresnel(double s, double &S_f, double &C_f)
Fresnel integrals: S_f = int_0_s(sin(pi/2 u*u)du), C_f = int_0_s(cos(pi/2 u*u)du) approximated with C...
Definition: utilities.cpp:161
EPS_FRESNEL
#define EPS_FRESNEL
Definition: fresnel_test.cpp:26
std
steering
Definition: dubins_state_space.hpp:70
TEST
TEST(Fresnel, fresnel)
Definition: fresnel_test.cpp:29
utilities.hpp


steering_functions
Author(s): Holger Banzhaf
autogenerated on Mon Dec 11 2023 03:27:43