Implement dependencies on interval arithmetic functions (+,-,*,/,inv,power), fix problems on trigonometric functions

This commit is contained in:
Soonho Kong 2013-08-20 19:20:51 -07:00
parent 176b1fccf7
commit fce26a824e
2 changed files with 601 additions and 369 deletions

View file

@ -178,20 +178,38 @@ public:
interval & operator*=(interval<T> const & o);
interval & operator/=(interval<T> const & o);
template<bool compute_intv = true, bool compute_deps = false>
interval & add(interval<T> const & o, interval_deps & deps = dummy);
template<bool compute_intv = true, bool compute_deps = false>
interval & sub(interval<T> const & o, interval_deps & deps = dummy);
template<bool compute_intv = true, bool compute_deps = false>
interval & mul(interval<T> const & o, interval_deps & deps = dummy);
template<bool compute_intv = true, bool compute_deps = false>
interval & div(interval<T> const & o, interval_deps & deps = dummy);
void add_jst (interval<T> const & o, interval_deps & deps);
void sub_jst (interval<T> const & o, interval_deps & deps);
void mul_jst (interval<T> const & o, interval_deps & deps);
void div_jst (interval<T> const & o, interval_deps & deps);
interval & operator+=(T const & o);
interval & operator-=(T const & o);
interval & operator*=(T const & o);
interval & operator/=(T const & o);
void inv();
template<bool compute_intv = true, bool compute_deps = false> void inv(interval_deps & deps = dummy);
void inv_jst (interval_deps & deps);
friend interval<T> inv(interval<T> o) { o.inv(); return o; }
void fmod(interval<T> y);
void fmod(T y);
friend interval<T> inv(interval<T> o, interval<T> y) { o.fmod(y); return o; }
friend interval<T> inv(interval<T> o, T y) { o.fmod(y); return o; }
friend interval<T> fmod(interval<T> o, interval<T> y) { o.fmod(y); return o; }
friend interval<T> fmod(interval<T> o, T y) { o.fmod(y); return o; }
void power(unsigned n);
template<bool compute_intv = true, bool compute_deps = false>
void power(unsigned n, interval_deps & deps = dummy);
void power_jst(unsigned n, interval_deps & deps);
friend interval<T> power(interval<T> o, unsigned k) { o.power(k); return o; }
template<bool compute_intv = true, bool compute_deps = false> void exp(interval_deps & deps = dummy);
template<bool compute_intv = true, bool compute_deps = false> void exp2(interval_deps & deps = dummy);
@ -237,8 +255,6 @@ public:
void acosh_jst(interval_deps & deps);
void atanh_jst(interval_deps & deps);
friend interval<T> power(interval<T> o, unsigned k) { o.power(k); return o; }
friend interval<T> exp (interval<T> o) { o.exp(); return o; }
friend interval<T> exp (interval<T> o, interval_deps & deps) { o.exp(deps); return o; }
friend interval<T> exp_jst(interval<T> o, interval_deps & deps) { o.exp_jst(deps); return o; }

File diff suppressed because it is too large Load diff