ge_madd.q (740B)
1 :name:fe:r->X:r->Y:r->Z:r->T:t0:t1:t2:t3:t4:t5:p->X:p->Y:p->Z:p->T:q->yplusx:q->yminusx:q->xy2d: 2 fe r:var/r=fe: 3 4 enter f:enter/f:>X1=fe#11:>Y1=fe#12:>Z1=fe#13:>T1=fe#14:>ypx2=fe#15:>ymx2=fe#16:>xy2d2=fe#17: 5 return:nofallthrough:<X3=fe#1:<Y3=fe#2:<Z3=fe#3:<T3=fe#4:leave: 6 7 h=f+g:<f=fe:<g=fe:>h=fe:asm/fe_add(>h,<f,<g);: 8 h=f-g:<f=fe:<g=fe:>h=fe:asm/fe_sub(>h,<f,<g);: 9 h=f*g:<f=fe:<g=fe:>h=fe:asm/fe_mul(>h,<f,<g);: 10 h=f^2:<f=fe:>h=fe:asm/fe_sq(>h,<f);: 11 h=2*g:<g=fe:>h=fe:asm/fe_add(>h,<g,<g);: 12 13 : 14 15 enter ge_madd 16 17 fe X1 18 fe Y1 19 fe Z1 20 fe T1 21 fe ypx2 22 fe ymx2 23 fe xy2d2 24 fe X3 25 fe Y3 26 fe Z3 27 fe T3 28 fe YpX1 29 fe YmX1 30 fe A 31 fe B 32 fe C 33 fe D 34 35 YpX1 = Y1+X1 36 YmX1 = Y1-X1 37 A = YpX1*ypx2 38 B = YmX1*ymx2 39 C = xy2d2*T1 40 D = 2*Z1 41 X3 = A-B 42 Y3 = A+B 43 Z3 = D+C 44 T3 = D-C 45 46 return