tor

The Tor anonymity network
git clone https://git.dasho.dev/tor.git
Log | Files | Refs | README | LICENSE

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