Lines Matching defs:Piecewise

2  * @brief Piecewise function class
47 * The Piecewise class manages a sequence of elements of a type as segments and
71 class Piecewise {
79 Piecewise() {}
81 explicit Piecewise(const T &s) {
91 explicit Piecewise(const output_type & v) {
128 Piecewise<T> operator()(SBasis f);
129 Piecewise<T> operator()(Piecewise<SBasis>f);
207 //Scales the domain of the function by a value. 0 will result in an empty Piecewise.
238 //Concatenates this Piecewise function with another, offseting time of the other to match the end.
239 inline void concat(const Piecewise<T> &other) {
255 inline void continuousConcat(const Piecewise<T> &other) {
268 //returns true if the Piecewise<T> meets some basic invariants.
285 * \relates Piecewise
288 inline typename FragmentConcept<T>::BoundsType bounds_fast(const Piecewise<T> &f) {
301 * \relates Piecewise
304 inline typename FragmentConcept<T>::BoundsType bounds_exact(const Piecewise<T> &f) {
317 * \relates Piecewise
320 inline typename FragmentConcept<T>::BoundsType bounds_local(const Piecewise<T> &f, const OptInterval &_m) {
341 * Returns a portion of a piece of a Piecewise<T>, given the piece's index and a to/from time.
342 * \relates Piecewise
345 T elem_portion(const Piecewise<T> &a, unsigned i, double from, double to) {
351 /**Piecewise<T> partition(const Piecewise<T> &pw, std::vector<double> const &c);
352 * Further subdivides the Piecewise<T> such that there is a cut at every value in c.
355 * //Given Piecewise<T> a and b:
356 * Piecewise<T> ac = a.partition(b.cuts);
357 * Piecewise<T> bc = b.partition(a.cuts);
360 * \relates Piecewise
363 Piecewise<T> partition(const Piecewise<T> &pw, std::vector<double> const &c) {
365 if(c.empty()) return Piecewise<T>(pw);
367 Piecewise<T> ret = Piecewise<T>();
379 //if the cuts have something earlier than the Piecewise<T>, add portions of the first segment
389 //Loop which handles cuts within the Piecewise<T> domain
415 //input cuts extend further than this Piecewise<T>, extend the last segment.
427 * Returns a Piecewise<T> with a defined domain of [min(from, to), max(from, to)].
428 * \relates Piecewise
431 Piecewise<T> portion(const Piecewise<T> &pw, double from, double to) {
432 if(pw.empty() || from == to) return Piecewise<T>();
434 Piecewise<T> ret;
465 * \relates Piecewise
468 Piecewise<T> remove_short_cuts(Piecewise<T> const &f, double tol) {
470 Piecewise<T> ret;
485 * \relates Piecewise
488 Piecewise<T> remove_short_cuts_extending(Piecewise<T> const &f, double tol) {
490 Piecewise<T> ret;
506 * \relates Piecewise
509 std::vector<double> roots(const Piecewise<T> &pw) {
523 * \relates Piecewise
526 Piecewise<T> operator+(Piecewise<T> const &a, typename T::output_type b) {
529 Piecewise<T> ret;
537 Piecewise<T> operator-(Piecewise<T> const &a, typename T::output_type b) {
540 Piecewise<T> ret;
548 Piecewise<T>& operator+=(Piecewise<T>& a, typename T::output_type b) {
558 Piecewise<T>& operator-=(Piecewise<T>& a, typename T::output_type b) {
572 * \relates Piecewise
575 Piecewise<T> operator-(Piecewise<T> const &a) {
578 Piecewise<T> ret;
588 * \relates Piecewise
591 Piecewise<T> operator*(Piecewise<T> const &a, double b) {
594 if(a.empty()) return Piecewise<T>();
596 Piecewise<T> ret;
606 * \relates Piecewise
609 Piecewise<T> operator*(Piecewise<T> const &a, T b) {
612 if(a.empty()) return Piecewise<T>();
614 Piecewise<T> ret;
624 * \relates Piecewise
627 Piecewise<T> operator/(Piecewise<T> const &a, double b) {
631 if(a.empty()) return Piecewise<T>();
633 Piecewise<T> ret;
641 Piecewise<T>& operator*=(Piecewise<T>& a, double b) {
649 Piecewise<T>& operator/=(Piecewise<T>& a, double b) {
663 * \relates Piecewise
666 Piecewise<T> operator+(Piecewise<T> const &a, Piecewise<T> const &b) {
669 Piecewise<T> pa = partition(a, b.cuts), pb = partition(b, a.cuts);
670 Piecewise<T> ret;
681 * \relates Piecewise
684 Piecewise<T> operator-(Piecewise<T> const &a, Piecewise<T> const &b) {
687 Piecewise<T> pa = partition(a, b.cuts), pb = partition(b, a.cuts);
688 Piecewise<T> ret = Piecewise<T>();
697 inline Piecewise<T>& operator+=(Piecewise<T> &a, Piecewise<T> const &b) {
702 inline Piecewise<T>& operator-=(Piecewise<T> &a, Piecewise<T> const &b) {
710 * \relates Piecewise
713 Piecewise<T2> operator*(Piecewise<T1> const &a, Piecewise<T2> const &b) {
717 Piecewise<T1> pa = partition(a, b.cuts);
718 Piecewise<T2> pb = partition(b, a.cuts);
719 Piecewise<T2> ret = Piecewise<T2>();
731 * \relates Piecewise
734 inline Piecewise<T>& operator*=(Piecewise<T> &a, Piecewise<T> const &b) {
739 Piecewise<SBasis> divide(Piecewise<SBasis> const &a, Piecewise<SBasis> const &b, unsigned k);
743 Piecewise<SBasis>
744 divide(Piecewise<SBasis> const &a, Piecewise<SBasis> const &b, double tol, unsigned k, double zero=1.e-3);
745 Piecewise<SBasis>
746 divide(SBasis const &a, Piecewise<SBasis> const &b, double tol, unsigned k, double zero=1.e-3);
747 Piecewise<SBasis>
748 divide(Piecewise<SBasis> const &a, SBasis const &b, double tol, unsigned k, double zero=1.e-3);
749 Piecewise<SBasis>
762 * \relates Piecewise
765 Piecewise<T> compose(Piecewise<T> const &f, SBasis const &g){
767 Piecewise<T> result;
769 if (g.isZero()) return Piecewise<T>(f(0));
772 return (Piecewise<T>) compose(f.segs[0],compose(Linear(-t0 / width, (1-t0) / width), g));
780 return (Piecewise<T>) compose(f.segs[idx],compose(Linear(-t0 / width, (1-t0) / width), g));
816 * \relates Piecewise
819 Piecewise<T> compose(Piecewise<T> const &f, Piecewise<SBasis> const &g){
821 Piecewise<T> result;
823 Piecewise<T> fgi=compose(f, g.segs[i]);
831 Piecewise<D2<SBasis> > compose(D2<SBasis2d> const &sb2d, Piecewise<D2<SBasis> > const &pwd2sb){
833 Piecewise<D2<SBasis> > result;
845 * \relates Piecewise
847 Piecewise<SBasis> pw_compose_inverse(SBasis const &f, SBasis const &g, unsigned order, double zero);
852 Piecewise<T> Piecewise<T>::operator()(SBasis f){return compose((*this),f);}
854 Piecewise<T> Piecewise<T>::operator()(Piecewise<SBasis>f){return compose((*this),f);}
859 * \relates Piecewise
862 Piecewise<T> integral(Piecewise<T> const &a) {
863 Piecewise<T> result;
878 * \relates Piecewise
881 Piecewise<T> derivative(Piecewise<T> const &a) {
882 Piecewise<T> result;
891 std::vector<double> roots(Piecewise<SBasis> const &f);
893 std::vector<std::vector<double> >multi_roots(Piecewise<SBasis> const &f, std::vector<double> const &values);
897 std::vector<Interval> level_set(Piecewise<SBasis> const &f, Interval const &level, double tol=1e-5);
898 std::vector<Interval> level_set(Piecewise<SBasis> const &f, double v, double vtol, double tol=1e-5);
899 //std::vector<Interval> level_sets(Piecewise<SBasis> const &f, std::vector<Interval> const &levels, double tol=1e-5);
900 //std::vector<Interval> level_sets(Piecewise<SBasis> const &f, std::vector<double> &v, double vtol, double tol=1e-5);
906 * \relates Piecewise
909 Piecewise<T> reverse(Piecewise<T> const &f) {
910 Piecewise<T> ret = Piecewise<T>();
926 * \relates Piecewise
929 Piecewise<T> lerp(double t, Piecewise<T> const &a, Piecewise<T> b) {
932 Piecewise<T> pA = partition(a, b.cuts);
933 Piecewise<T> pB = partition(b, a.cuts);