pub fn a_sidh_isogen(sk: ASc, e: MontCurve, ab: Basis, bb: Basis, ea: usize) -> (MontCurve, Basis) {
    let (p_a, q_a) = ab;
    let s = a_dbl_and_add(e, sk, q_a);
    let s = add(e, p_a, s);            // S:=PA+SK*QA;
    iso_2_ea_basis(e, bb, s, ea)
}
/// Input: (Alices) secret key sk, curve e, basis ab for the 2^EA torsion and basis bb for the 3^EB torsion
/// Output: image curve under 2^EA-isogeny with basis for 3^EB torsion
(Alices) secret key sk, curve e, basis ab for the 2^EA torsion and basis bb for the 3^EB torsion
Output: image curve under 2^EA-isogeny with basis for 3^EB torsion
( Alices ) secret key sk curve e basis ab for the 2^EA torsion and basis bb for the 3^EB torsion Output : image curve under 2^EA - isogeny with basis for 3^EB torsion
pub fn a_sidh_isogen(sk: ASc, e: MontCurve, ab: Basis, bb: Basis, ea: usize) -> (MontCurve, Basis) {
    let (p_a, q_a) = ab;
    let s = a_dbl_and_add(e, sk, q_a);
    let s = add(e, p_a, s);            // S:=PA+SK*QA;
    iso_2_ea_basis(e, bb, s, ea)
}
pub fn a_sidh_isogen ( sk : ASc , e : MontCurve , ab : Basis , bb : Basis , ea : usize ) -> ( MontCurve , Basis ) { let ( p_a , q_a ) = ab ; let s = a_dbl_and_add ( e , sk , q_a ) ; let s = add ( e , p_a , s ) ; // S:=PA+SK*QA; iso_2_ea_basis ( e , bb , s , ea ) }
Input: (Alices) secret key sk, curve e, basis ab for the 2^EA torsion and basis bb for the 3^EB torsion
Output: image curve under 2^EA-isogeny with basis for 3^EB torsion
Input : ( Alices ) secret key sk curve e basis ab for the 2^EA torsion and basis bb for the 3^EB torsion Output : image curve under 2^EA - isogeny with basis for 3^EB torsion
sk
ASc
e
MontCurve
ab
Basis
bb
Basis
ea
usize
sk
ASc
e
MontCurve
ab
Basis
bb
Basis
ea
usize