pub fn iso_2_ea(e: MontCurve, s: Point, ea: usize) -> MontCurve {
    let mut e_mut = e;
    let mut s_mut = s;

    let mut _t = (fp2zero(), fp2zero());

    for i in 1..(ea + 1) {
	_t = dbl_k(e_mut, s_mut, EA - i); // compute point of order 2
	e_mut = curve_2_iso(_t, e_mut);    // compute codomain of the iso corresponding to s_mut
	s_mut = eval_2_iso(_t, s_mut);     // carry s to iso curve
    }
    e_mut
}
/// Input: curve e and point s of order 2^EA
/// Output: codomain of the 2^EA-isogeny corresponding to s
curve e and point s of order 2^EA
Output: codomain of the 2^EA-isogeny corresponding to s
curve e and point s of order 2^EA Output : codomain of the 2^EA - isogeny corresponding to s
pub fn iso_2_ea(e: MontCurve, s: Point, ea: usize) -> MontCurve {
    let mut e_mut = e;
    let mut s_mut = s;
    let mut _t = (fp2zero(), fp2zero());
    for i in 1..(ea + 1) {
	_t = dbl_k(e_mut, s_mut, EA - i); // compute point of order 2
	e_mut = curve_2_iso(_t, e_mut);    // compute codomain of the iso corresponding to s_mut
	s_mut = eval_2_iso(_t, s_mut);     // carry s to iso curve
    }
    e_mut
}
pub fn iso_2_ea ( e : MontCurve , s : Point , ea : usize ) -> MontCurve { let mut e_mut = e ; let mut s_mut = s ; let mut _t = ( fp2zero ( ) , fp2zero ( ) ) ; for i in 1 .. ( ea + 1 ) { _t = dbl_k ( e_mut , s_mut , EA - i ) ; // compute point of order 2 e_mut = curve_2_iso ( _t , e_mut ) ; // compute codomain of the iso corresponding to s_mut s_mut = eval_2_iso ( _t , s_mut ) ; // carry s to iso curve } e_mut }
Input: curve e and point s of order 2^EA
Output: codomain of the 2^EA-isogeny corresponding to s
Input : curve e and point s of order 2^EA Output : codomain of the 2^EA - isogeny corresponding to s
e
MontCurve
s
Point
ea
usize
e
MontCurve
s
Point
ea
usize