void zzn4_negate(_MIPD_ zzn4 *x,zzn4 *w) { #ifdef MR_OS_THREADS miracl *mr_mip=get_mip(); #endif if (mr_mip->ERNUM) return; MR_IN(FUNC_BASE+1) zzn4_copy(x,w); zzn2_negate(_MIPP_ &(w->a),&(w->a)); zzn2_negate(_MIPP_ &(w->b),&(w->b)); MR_OUT }
void zzn4_inv(_MIPD_ zzn4 *w) { #ifdef MR_OS_THREADS miracl *mr_mip=get_mip(); #endif zzn2 t1,t2; if (mr_mip->ERNUM) return; if (w->unitary) { zzn4_conj(_MIPP_ w,w); return; } MR_IN(FUNC_BASE+10) t1.a=mr_mip->w8; t1.b=mr_mip->w9; t2.a=mr_mip->w10; t2.b=mr_mip->w11; zzn2_mul(_MIPP_ &(w->a),&(w->a),&t1); zzn2_mul(_MIPP_ &(w->b),&(w->b),&t2); zzn2_txx(_MIPP_ &t2); zzn2_sub(_MIPP_ &t1,&t2,&t1); zzn2_inv(_MIPP_ &t1); zzn2_mul(_MIPP_ &(w->a),&t1,&(w->a)); zzn2_negate(_MIPP_ &t1,&t1); zzn2_mul(_MIPP_ &(w->b),&t1,&(w->b)); MR_OUT }
void zzn4_inv(_MIPD_ zzn4 *u) { zzn2 t1,t2; if (u->unitary) { zzn4_conj(_MIPP_ u,u); return; } t1.a=mr_mip->w8; t1.b=mr_mip->w9; t2.a=mr_mip->w3; t2.b=mr_mip->w4; zzn2_mul(_MIPP_ &(u->x),&(u->x),&t1); zzn2_mul(_MIPP_ &(u->y),&(u->y),&t2); zzn2_times_irp(_MIPP_ &t2); zzn2_sub(_MIPP_ &t1,&t2,&t1); zzn2_inv(_MIPP_ &t1); zzn2_mul(_MIPP_ &(u->x),&t1,&(u->x)); zzn2_negate(_MIPP_ &t1,&t1); zzn2_mul(_MIPP_ &(u->y),&t1,&(u->y)); }
void zzn4_conj(_MIPD_ zzn4 *u,zzn4 *w) { zzn4_copy(u,w); zzn2_negate(_MIPP_ &(w->y),&(w->y)); }