pub fn double(&self) -> G2Projective {
        // Algorithm 9, https://eprint.iacr.org/2015/1060.pdf

        let t0 = self.y.square();
        let z3 = t0 + t0;
        let z3 = z3 + z3;
        let z3 = z3 + z3;
        let t1 = self.y * self.z;
        let t2 = self.z.square();
        let t2 = mul_by_3b(t2);
        let x3 = t2 * z3;
        let y3 = t0 + t2;
        let z3 = t1 * z3;
        let t1 = t2 + t2;
        let t2 = t1 + t2;
        let t0 = t0 - t2;
        let y3 = t0 * y3;
        let y3 = x3 + y3;
        let t1 = self.x * self.y;
        let x3 = t0 * t1;
        let x3 = x3 + x3;

        let tmp = G2Projective {
            x: x3,
            y: y3,
            z: z3,
        };

        G2Projective::conditional_select(&tmp, &G2Projective::identity(), self.is_identity())
    }
/// Computes the doubling of this point.
Computes the doubling of this point.
Computes the doubling of this point .
pub fn double(&self) -> G2Projective {
        // Algorithm 9, https://eprint.iacr.org/2015/1060.pdf
        let t0 = self.y.square();
        let z3 = t0 + t0;
        let z3 = z3 + z3;
        let z3 = z3 + z3;
        let t1 = self.y * self.z;
        let t2 = self.z.square();
        let t2 = mul_by_3b(t2);
        let x3 = t2 * z3;
        let y3 = t0 + t2;
        let z3 = t1 * z3;
        let t1 = t2 + t2;
        let t2 = t1 + t2;
        let t0 = t0 - t2;
        let y3 = t0 * y3;
        let y3 = x3 + y3;
        let t1 = self.x * self.y;
        let x3 = t0 * t1;
        let x3 = x3 + x3;
        let tmp = G2Projective {
            x: x3,
            y: y3,
            z: z3,
        };
        G2Projective::conditional_select(&tmp, &G2Projective::identity(), self.is_identity())
    }
pub fn double ( & self ) -> G2Projective { // Algorithm 9, https://eprint.iacr.org/2015/1060.pdf let t0 = self . y . square ( ) ; let z3 = t0 + t0 ; let z3 = z3 + z3 ; let z3 = z3 + z3 ; let t1 = self . y * self . z ; let t2 = self . z . square ( ) ; let t2 = mul_by_3b ( t2 ) ; let x3 = t2 * z3 ; let y3 = t0 + t2 ; let z3 = t1 * z3 ; let t1 = t2 + t2 ; let t2 = t1 + t2 ; let t0 = t0 - t2 ; let y3 = t0 * y3 ; let y3 = x3 + y3 ; let t1 = self . x * self . y ; let x3 = t0 * t1 ; let x3 = x3 + x3 ; let tmp = G2Projective { x : x3 , y : y3 , z : z3 , } ; G2Projective :: conditional_select ( & tmp , & G2Projective :: identity ( ) , self . is_identity ( ) ) }
Computes the doubling of this point.
Computes the doubling of this point .
&self
&self