38 namespace Gecode {
namespace Float {
namespace Trigonometric {
46 #define I0__PI_2I FloatVal(0,pi_half_upper())
47 #define POS(X) ((I0__PI_2I.in(X))?0:1)
48 #define ATANINF_DOWN r.atan_down(aTanIv.min())
49 #define ATANSUP_UP r.atan_up(aTanIv.max())
53 switch (
POS(iv_min) )
70 switch (
POS(iv_max) )
95 template<
class A,
class B>
100 template<
class A,
class B>
104 #define I0__PI_2I FloatVal(0,pi_half_upper())
110 (void)
new (home)
Tan<A,B>(home,x0,x1);
114 template<
class A,
class B>
119 template<
class A,
class B>
122 return new (home)
Tan<A,B>(home,share,*
this);
125 template<
class A,
class B>
133 #define I0__PI_2I FloatVal(0,pi_half_upper())
146 if (r.
tan_down(x0_min) > x0_min) n_min++;
148 }
while (t > x0_min);
152 if (r.
tan_down(x0_max) < x0_max) n_max--;
154 }
while (t > x0_max);
163 if (x0.min() < 0) n_min--;
164 if (x0.max() < 0) n_max--;
170 if (n_iv_min > n_iv_max)
return ES_FAILED;
183 template<
class A,
class B>
188 template<
class A,
class B>
200 template<
class A,
class B>
205 template<
class A,
class B>
208 return new (home)
ATan<A,B>(home,share,*
this);
211 template<
class A,
class B>