pub fn operate_with_affine(&self, other: &Self) -> Self {
        let [x1, y1, z1] = self.coordinates();
        let [x2, y2, _z2] = other.coordinates();

        if self.is_neutral_element() {
            return other.clone();
        }
        if other.is_neutral_element() {
            return self.clone();
        }

        let z1z1 = z1.square();
        let u1 = x1;
        let u2 = x2 * &z1z1;
        let s1 = y1;
        let s2 = y2 * z1 * &z1z1;

        if *u1 == u2 {
            if *s1 == s2 {
                self.double() // Is the same point
            } else {
                Self::neutral_element() // P + (-P) = 0
            }
        } else {
            let h = &u2 - u1;
            let hh = h.square();
            let hhh = &h * &hh;
            let r = &s2 - s1;
            let v = u1 * &hh;
            let x3 = r.square() - (&hhh + &v + &v);
            let y3 = r * (&v - &x3) - s1 * &hhh;
            let z3 = z1 * &h;

            debug_assert_eq!(
                E::defining_equation_jacobian(&x3, &y3, &z3),
                FieldElement::<E::BaseField>::zero()
            );
            // SAFETY: The values `x_3, y_3, z_3` are computed correctly to be on the curve.
            // The assertion above verifies that the resulting point is valid.
            Self::new([x3, y3, z3]).unwrap()
        }
    }
More efficient than operate_with. Other should be in affine form!
crates/math/src/elliptic_curve/short_weierstrass/point.rs