#include "ge.h"

/*
r = p + q
*/

void ge_add(ge_p1p1 *r,const ge_p3 *p,const ge_cached *q)
{
  fe t0;





















fe_add(r->X,p->Y,p->X);

fe_sub(r->Y,p->Y,p->X);

fe_mul(r->Z,r->X,q->YplusX);

fe_mul(r->Y,r->Y,q->YminusX);

fe_mul(r->T,q->T2d,p->T);

fe_mul(r->X,p->Z,q->Z);

fe_add(t0,r->X,r->X);

fe_sub(r->X,r->Z,r->Y);

fe_add(r->Y,r->Z,r->Y);

fe_add(r->Z,t0,r->T);

fe_sub(r->T,t0,r->T);

}
