pub fn b_sidh_isogen(sk: BSc, e: MontCurve, bb: Basis, ab: Basis, eb: usize) -> (MontCurve, Basis) {
    // S:=P2+SK_2*Q2;
    let (p_b, q_b) = bb;
    let s = b_dbl_and_add(e, sk, q_b);
    let s = add(e, p_b, s);            // S:=PB+SK*QB;

    iso_3_eb_basis(e, ab, s, eb)
}
/// Input: (Bobs) secret key sk, curve e, basis bb for the 3^EB torsion and basis ab for the 2^EA torsion
/// Output: image curve under 3^EB-isogeny with basis for 2^EA torsion
(Bobs) secret key sk, curve e, basis bb for the 3^EB torsion and basis ab for the 2^EA torsion
Output: image curve under 3^EB-isogeny with basis for 2^EA torsion
( Bobs ) secret key sk curve e basis bb for the 3^EB torsion and basis ab for the 2^EA torsion Output : image curve under 3^EB - isogeny with basis for 2^EA torsion
pub fn b_sidh_isogen(sk: BSc, e: MontCurve, bb: Basis, ab: Basis, eb: usize) -> (MontCurve, Basis) {
    // S:=P2+SK_2*Q2;
    let (p_b, q_b) = bb;
    let s = b_dbl_and_add(e, sk, q_b);
    let s = add(e, p_b, s);            // S:=PB+SK*QB;
    iso_3_eb_basis(e, ab, s, eb)
}
pub fn b_sidh_isogen ( sk : BSc , e : MontCurve , bb : Basis , ab : Basis , eb : usize ) -> ( MontCurve , Basis ) { // S:=P2+SK_2*Q2; let ( p_b , q_b ) = bb ; let s = b_dbl_and_add ( e , sk , q_b ) ; let s = add ( e , p_b , s ) ; // S:=PB+SK*QB; iso_3_eb_basis ( e , ab , s , eb ) }
Input: (Bobs) secret key sk, curve e, basis bb for the 3^EB torsion and basis ab for the 2^EA torsion
Output: image curve under 3^EB-isogeny with basis for 2^EA torsion
Input : ( Bobs ) secret key sk curve e basis bb for the 3^EB torsion and basis ab for the 2^EA torsion Output : image curve under 3^EB - isogeny with basis for 2^EA torsion
sk
BSc
e
MontCurve
bb
Basis
ab
Basis
eb
usize
sk
BSc
e
MontCurve
bb
Basis
ab
Basis
eb
usize