#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);
}