// Path: jopenvoronoi-main/src/main/java/org/rogach/jopenvoronoi/Numeric.java
// public static double chop(double val, double tol) {
//     double _epsilon = tol;
//     if (Math.abs(val) < _epsilon)
//         return 0;
//     else
//         return val;
// }
// 
// Path: jopenvoronoi-main/src/main/java/org/rogach/jopenvoronoi/Numeric.java
// public static double sq(double a) {
//     return a*a;
// }


import static org.rogach.jopenvoronoi.Numeric.chop;
import static org.rogach.jopenvoronoi.Numeric.sq;
        this.sign = other.sign;
        this.face = other.face;
        this.k = other.k;
        this.null_face = other.null_face;
        this.has_null_face = other.has_null_face;
        this.type = other.type;
        this.valid = other.valid;
        x[0] = other.x[0];
        x[1] = other.x[1];
        x[2] = other.x[2];
        x[3] = other.x[3];
        x[4] = other.x[4];
        x[5] = other.x[5];
        x[6] = other.x[6];
        x[7] = other.x[7];
        y[0] = other.y[0];
        y[1] = other.y[1];
        y[2] = other.y[2];
        y[3] = other.y[3];
        y[4] = other.y[4];
        y[5] = other.y[5];
        y[6] = other.y[6];
        y[7] = other.y[7];
    }

    /// \brief return point on edge at given offset-distance t
    ///
    /// the eight-parameter formula for a point on the edge is:
    /// x = x1 - x2 - x3*t +/- x4 * sqrt( square(x5+x6*t) - square(x7+x8*t) )
    public Point point(double t) {
// Path: jopenvoronoi-main/src/main/java/org/rogach/jopenvoronoi/Numeric.java
// public static double chop(double val, double tol) {
//     double _epsilon = tol;
//     if (Math.abs(val) < _epsilon)
//         return 0;
//     else
//         return val;
// }
// 
// Path: jopenvoronoi-main/src/main/java/org/rogach/jopenvoronoi/Numeric.java
// public static double sq(double a) {
//     return a*a;
// }


// Path: jopenvoronoi-main/src/main/java/org/rogach/jopenvoronoi/Edge.java
import static org.rogach.jopenvoronoi.Numeric.chop;
import static org.rogach.jopenvoronoi.Numeric.sq;

        this.sign = other.sign;
        this.face = other.face;
        this.k = other.k;
        this.null_face = other.null_face;
        this.has_null_face = other.has_null_face;
        this.type = other.type;
        this.valid = other.valid;
        x[0] = other.x[0];
        x[1] = other.x[1];
        x[2] = other.x[2];
        x[3] = other.x[3];
        x[4] = other.x[4];
        x[5] = other.x[5];
        x[6] = other.x[6];
        x[7] = other.x[7];
        y[0] = other.y[0];
        y[1] = other.y[1];
        y[2] = other.y[2];
        y[3] = other.y[3];
        y[4] = other.y[4];
        y[5] = other.y[5];
        y[6] = other.y[6];
        y[7] = other.y[7];
    }

    /// \brief return point on edge at given offset-distance t
    ///
    /// the eight-parameter formula for a point on the edge is:
    /// x = x1 - x2 - x3*t +/- x4 * sqrt( square(x5+x6*t) - square(x7+x8*t) )
    public Point point(double t) {
        double discr1 =  chop( sq(x[4]+x[5]*t) - sq(x[6]+x[7]*t), 1e-14 );