22
22
using namespace std ;
23
23
using namespace codac2 ;
24
24
25
- #define PI codac2::pi
26
-
27
25
const double MAX_DOUBLE = std::numeric_limits<double >::max();
28
26
29
27
void CHECK_bwd_trigo (const Interval& y, const Interval& x, const Interval& expected_x)
@@ -263,25 +261,25 @@ TEST_CASE("Interval bwd operations")
263
261
264
262
Interval a, y;
265
263
266
- a = Interval (PI /6 .,PI /3 .); y = Interval (.5 ,10 .); x = Interval (.5 ,2 .);
264
+ a = Interval (pi /6 .,pi /3 .); y = Interval (.5 ,10 .); x = Interval (.5 ,2 .);
267
265
bwd_atan2 (a,y,x); CHECK (Approx (y) == Interval (.5 ,2 .*sqrt (3 .))); CHECK (Approx (x) == Interval (.5 ,2 .));
268
- a = Interval (PI /6 .,PI /3 .); y = Interval (.5 ,2 .); x = Interval (.5 ,10 .);
266
+ a = Interval (pi /6 .,pi /3 .); y = Interval (.5 ,2 .); x = Interval (.5 ,10 .);
269
267
bwd_atan2 (a,y,x); CHECK (Approx (y) == Interval (.5 ,2 .)); CHECK (Approx (x) == Interval (.5 ,2 .*sqrt (3 .)));
270
- a = Interval (-PI /4 .,PI /4 .); y = Interval (1 .,2 .); x = Interval (.5 ,2 .);
268
+ a = Interval (-pi /4 .,pi /4 .); y = Interval (1 .,2 .); x = Interval (.5 ,2 .);
271
269
bwd_atan2 (a,y,x); CHECK (Approx (y) == Interval (1 .,2 .)); CHECK (Approx (x) == Interval (1 .,2 .));
272
- a = Interval (-PI /2 .,0 .); y = Interval (.5 ,2 .); x = Interval (.5 ,10 .);
270
+ a = Interval (-pi /2 .,0 .); y = Interval (.5 ,2 .); x = Interval (.5 ,10 .);
273
271
bwd_atan2 (a,y,x); CHECK (Approx (y) == Interval::empty ()); CHECK (Approx (x) == Interval::empty ());
274
- a = Interval (2 .*PI ,3 .*PI ); y = Interval (-.5 ,2 .); x = Interval (.5 ,10 .);
272
+ a = Interval (2 .*pi ,3 .*pi ); y = Interval (-.5 ,2 .); x = Interval (.5 ,10 .);
275
273
bwd_atan2 (a,y,x); CHECK (Approx (y) == Interval::empty ()); CHECK (Approx (x) == Interval::empty ());
276
- a = Interval (2 *PI /3 .,5 .*PI /6 .); y = Interval (0 .,100 .); x = Interval (-20 .,-sqrt (3 .)/2 .);
274
+ a = Interval (2 *pi /3 .,5 .*pi /6 .); y = Interval (0 .,100 .); x = Interval (-20 .,-sqrt (3 .)/2 .);
277
275
bwd_atan2 (a,y,x); CHECK (Approx (y,1e-10 ) == Interval (.5 ,20 .*sqrt (3 .))); CHECK (Approx (x) == Interval (-20 .,-sqrt (3 .)/2 ));
278
- a = Interval (-3 *PI /4 .,-2 *PI /3 .); y = Interval (-sqrt (3 .)/2 .,2 .); x = Interval (-sqrt (2 .)/2 .,0 .);
276
+ a = Interval (-3 *pi /4 .,-2 *pi /3 .); y = Interval (-sqrt (3 .)/2 .,2 .); x = Interval (-sqrt (2 .)/2 .,0 .);
279
277
bwd_atan2 (a,y,x); CHECK (Approx (y) == Interval (-sqrt (3 .)/2 .,0 .)); CHECK (Approx (x) == Interval (-sqrt (2 .)/2 .,0 .));
280
- a = Interval (-3 *PI /4 .,-2 *PI /3 .); y = Interval (-sqrt (3 .)/2 .,2 .); x = Interval (-1 .,-.5 );
278
+ a = Interval (-3 *pi /4 .,-2 *pi /3 .); y = Interval (-sqrt (3 .)/2 .,2 .); x = Interval (-1 .,-.5 );
281
279
bwd_atan2 (a,y,x); CHECK (Approx (y) == Interval (-sqrt (3 .)/2 .,-.5 )); CHECK (Approx (x) == Interval (-sqrt (3 .)/2 .,-.5 ));
282
- a = Interval (-3 *PI /4 .,-PI /4 .); y = Interval (-5 .,-.5 ); x = Interval (-oo,oo);
280
+ a = Interval (-3 *pi /4 .,-pi /4 .); y = Interval (-5 .,-.5 ); x = Interval (-oo,oo);
283
281
bwd_atan2 (a,y,x); CHECK (Approx (y) == Interval (-5 .,-.5 )); CHECK (Approx (x) == Interval (-5 .,5 .));
284
- a = Interval (-PI /3 .,PI /4 .); y = Interval (-oo,oo); x = Interval (sqrt (3 .)/2 .);
282
+ a = Interval (-pi /3 .,pi /4 .); y = Interval (-oo,oo); x = Interval (sqrt (3 .)/2 .);
285
283
bwd_atan2 (a,y,x); CHECK (Approx (y) == Interval (-1.5 ,sqrt (3 .)/2 .)); CHECK (Approx (x) == Interval (sqrt (3 .)/2 .));
286
284
a = Interval::half_pi (); y = Interval (1 ); x = 0 .;
287
285
bwd_atan2 (a,y,x); CHECK (Approx (y) == 1 .); CHECK (Approx (x) == 0 .);
@@ -294,15 +292,15 @@ TEST_CASE("Interval bwd operations")
294
292
x = Interval (-1 ,5 ); bwd_sqrt (Interval (2 ,5 ), x); CHECK (x == Interval (4 ,5 ));
295
293
x = Interval (-oo,oo); bwd_sqrt (Interval (-4 ,-2 ), x); CHECK (x == Interval::empty ());
296
294
297
- x = Interval (-1 .,3 .); bwd_atan (Interval (0 .,PI /6 .),x); CHECK (x == tan (Interval (0 .,PI /6 .)));
298
- x = Interval (0 ,5 *PI /2.0 ); bwd_atan (Interval (-PI ,1.5 ),x); CHECK (x == Interval (0 ,5 *PI /2.0 ));
299
- x = Interval (.2 ,.5 ); bwd_atan (Interval (0 .,PI /6 .),x); CHECK (x == Interval (.2 ,.5 ));
300
- x = Interval (-100 ,100 ); bwd_atan (Interval (-PI /2 -0.1 ,PI /2 +0.1 ),x); CHECK (x == Interval (-100 ,100 ));
301
- x = Interval (-100 ,100 ); bwd_atan (Interval (PI /2 +0.1 ,PI ),x); CHECK (x == Interval::empty ());
302
- x = Interval (-100 ,100 ); bwd_atan (Interval (-PI,-PI /2 -0.1 ),x); CHECK (x == Interval::empty ());
295
+ x = Interval (-1 .,3 .); bwd_atan (Interval (0 .,pi /6 .),x); CHECK (x == tan (Interval (0 .,pi /6 .)));
296
+ x = Interval (0 ,5 *pi /2.0 ); bwd_atan (Interval (-pi ,1.5 ),x); CHECK (x == Interval (0 ,5 *pi /2.0 ));
297
+ x = Interval (.2 ,.5 ); bwd_atan (Interval (0 .,pi /6 .),x); CHECK (x == Interval (.2 ,.5 ));
298
+ x = Interval (-100 ,100 ); bwd_atan (Interval (-pi /2 -0.1 ,pi /2 +0.1 ),x); CHECK (x == Interval (-100 ,100 ));
299
+ x = Interval (-100 ,100 ); bwd_atan (Interval (pi /2 +0.1 ,pi ),x); CHECK (x == Interval::empty ());
300
+ x = Interval (-100 ,100 ); bwd_atan (Interval (-pi,-pi /2 -0.1 ),x); CHECK (x == Interval::empty ());
303
301
304
- x = Interval (-oo,oo); bwd_atan (Interval (-PI /4 ,PI /2 .), x); CHECK (x.lb () == -1 ); CHECK (x.ub () > 1000 );
305
- x = Interval (-oo,oo); bwd_atan (Interval (-PI /2 ,PI /4 .), x); CHECK (x.ub () == +1 ); CHECK (x.lb () < -1000 );
302
+ x = Interval (-oo,oo); bwd_atan (Interval (-pi /4 ,pi /2 .), x); CHECK (x.lb () == -1 ); CHECK (x.ub () > 1000 );
303
+ x = Interval (-oo,oo); bwd_atan (Interval (-pi /2 ,pi /4 .), x); CHECK (x.ub () == +1 ); CHECK (x.lb () < -1000 );
306
304
307
305
CHECK_bwd_add (Interval (1 ,3 ),Interval (1 ,2 ),Interval (-10 ,5 ),Interval (1 ,2 ),Interval (-1 ,2 ));
308
306
CHECK_bwd_add (Interval::empty (),Interval (0.1 ,2.0 ),Interval (-10 ,2 ),Interval::empty (),Interval::empty ());
@@ -319,11 +317,11 @@ TEST_CASE("Interval bwd operations")
319
317
CHECK_bwd_imod (3 .,Interval (3 .,5 .),Interval (1 .,2 .),Interval (4 .,5 .),Interval (1 .,2 .));
320
318
CHECK_bwd_imod (2 .,Interval (7 .,8 .),Interval (.5 ,2 .),Interval (7 .,8 .),Interval (1 .,2 .));
321
319
CHECK_bwd_imod (2 .,Interval (7 .,8 .),Interval (0 .,2 .),Interval (7 .,8 .),Interval (0 .,2 .));
322
- CHECK_bwd_imod (2 .*PI ,Interval (2 .*PI ,3 .*PI ),Interval (PI /6 ,PI /2 .),Interval (13 .*PI /6 .,5 .*PI /2 .),Interval (PI /6 ,PI /2 .));
323
- CHECK_bwd_imod (2 .*PI ,Interval (3 .*PI ,4 .*PI ),Interval (PI /3 ,PI /2 .),Interval::empty (),Interval::empty ());
324
- CHECK_bwd_imod (2 .*PI ,Interval (3 .*PI ,4 .*PI ),Interval (0 .,PI /2 .),Interval (4 *PI ),Interval (0 .));
325
- CHECK_bwd_imod (2 .*PI ,Interval (2 .*PI ,4 .*PI ),Interval (-PI /6 ,PI /2 .),Interval (2 .*PI ,4 .*PI ),Interval (-PI /6 ,PI /2 .));
326
- CHECK_bwd_imod (2 .*PI ,Interval (7 .*PI /4 .,8 .*PI /3 ),Interval (-PI /2 ,PI /2 .),Interval (7 .*PI /4 .,5 .*PI /2 .),Interval (-PI /4 ,PI /2 .));
320
+ CHECK_bwd_imod (2 .*pi ,Interval (2 .*pi ,3 .*pi ),Interval (pi /6 ,pi /2 .),Interval (13 .*pi /6 .,5 .*pi /2 .),Interval (pi /6 ,pi /2 .));
321
+ CHECK_bwd_imod (2 .*pi ,Interval (3 .*pi ,4 .*pi ),Interval (pi /3 ,pi /2 .),Interval::empty (),Interval::empty ());
322
+ CHECK_bwd_imod (2 .*pi ,Interval (3 .*pi ,4 .*pi ),Interval (0 .,pi /2 .),Interval (4 *pi ),Interval (0 .));
323
+ CHECK_bwd_imod (2 .*pi ,Interval (2 .*pi ,4 .*pi ),Interval (-pi /6 ,pi /2 .),Interval (2 .*pi ,4 .*pi ),Interval (-pi /6 ,pi /2 .));
324
+ CHECK_bwd_imod (2 .*pi ,Interval (7 .*pi /4 .,8 .*pi /3 ),Interval (-pi /2 ,pi /2 .),Interval (7 .*pi /4 .,5 .*pi /2 .),Interval (-pi /4 ,pi /2 .));
327
325
328
326
x = Interval (-oo,oo); bwd_floor (Interval::empty (),x); CHECK (x == Interval::empty ());
329
327
x = Interval (-oo,-0.000001 ); bwd_floor (Interval (-oo,-1 ),x); CHECK (x == Interval (-oo,-0.000001 ));
0 commit comments