in src/fp24.js [440:546]
smul: function(y) {
if (ctx.ECP.SEXTIC_TWIST==ctx.ECP.D_TYPE)
{
var w1=new ctx.FP4(this.a.geta());
var w2=new ctx.FP4(this.a.getb());
var w3=new ctx.FP4(this.b.geta());
w1.mul(y.a.geta());
w2.mul(y.a.getb());
w3.mul(y.b.geta());
var ta=new ctx.FP4(this.a.geta());
var tb=new ctx.FP4(y.a.geta());
ta.add(this.a.getb()); ta.norm();
tb.add(y.a.getb()); tb.norm();
var tc=new ctx.FP4(ta);
tc.mul(tb);
var t=new ctx.FP4(w1);
t.add(w2);
t.neg();
tc.add(t);
ta.copy(this.a.geta()); ta.add(this.b.geta()); ta.norm();
tb.copy(y.a.geta()); tb.add(y.b.geta()); tb.norm();
var td=new ctx.FP4(ta);
td.mul(tb);
t.copy(w1);
t.add(w3);
t.neg();
td.add(t);
ta.copy(this.a.getb()); ta.add(this.b.geta()); ta.norm();
tb.copy(y.a.getb()); tb.add(y.b.geta()); tb.norm();
var te=new ctx.FP4(ta);
te.mul(tb);
t.copy(w2);
t.add(w3);
t.neg();
te.add(t);
w2.times_i();
w1.add(w2);
this.a.geta().copy(w1); this.a.getb().copy(tc);
this.b.geta().copy(td); this.b.getb().copy(te);
this.c.geta().copy(w3); this.c.getb().zero();
this.a.norm();
this.b.norm();
} else {
var w1=new ctx.FP4(this.a.geta());
var w2=new ctx.FP4(this.a.getb());
var w3=new ctx.FP4(this.c.getb());
w1.mul(y.a.geta());
w2.mul(y.a.getb());
w3.mul(y.c.getb());
var ta=new ctx.FP4(this.a.geta());
var tb=new ctx.FP4(y.a.geta());
ta.add(this.a.getb()); ta.norm();
tb.add(y.a.getb()); tb.norm();
var tc=new ctx.FP4(ta);
tc.mul(tb);
var t=new ctx.FP4(w1);
t.add(w2);
t.neg();
tc.add(t);
ta.copy(this.a.geta()); ta.add(this.c.getb()); ta.norm();
tb.copy(y.a.geta()); tb.add(y.c.getb()); tb.norm();
var td=new ctx.FP4(ta);
td.mul(tb);
t.copy(w1);
t.add(w3);
t.neg();
td.add(t);
ta.copy(this.a.getb()); ta.add(this.c.getb()); ta.norm();
tb.copy(y.a.getb()); tb.add(y.c.getb()); tb.norm();
var te=new ctx.FP4(ta);
te.mul(tb);
t.copy(w2);
t.add(w3);
t.neg();
te.add(t);
w2.times_i();
w1.add(w2);
this.a.geta().copy(w1); this.a.getb().copy(tc);
w3.times_i();
w3.norm();
this.b.geta().zero(); this.b.getb().copy(w3);
te.norm();
te.times_i();
this.c.geta().copy(te);
this.c.getb().copy(td);
this.a.norm();
this.c.norm();
}
this.stype=ctx.FP.SPARSE;
},