anchor.diff:                     t1:= para1.ps;
                      t2:= para2.ps;
   
  -                   for i:=0 to dotsize do
  -                   begin
  -                        arr1[0]:= t1[i];
  -                        arr2[0]:= t1[i];
  -
  -                        asm
  -                          movss xmm0, [arr1]
  -                          movss xmm1, [arr2]
  -                          movss xmm2, [t3]
  -
  -                          mulps xmm0, xmm1
  -
  -                          addps xmm2, xmm0
  -
  -                          movss [t3],xmm2
  -
  -                        end;
  -
  +                   asm
  +                      movups xmm0, [t1]
  +                      movups xmm1, [t2]
  +
  +                      mulps xmm0, xmm1
  +
  +                      haddps xmm0, xmm0
  +                      haddps xmm0, xmm0
  +
  +                      movups [t3], xmm0
                      end;
   
                      Dot:= t3[0];
  
positive.code:   //Must say that intel asm is the easiest asm i have learned
  
    floatp4 = class(TObject)
       private
          mainPack: TArr1Single;
  
      public
  
negative.code:                  andv.ps := t3;
              end;
  
              operator not (para1: floatp4) notv: floatp4;
              var t1,t2: TArr1Single;
              begin
                   notv:= floatp4.Create;
                   t1:= para1.ps;
  
                   asm
                      movups xmm0, [t1]
                      movups xmm1, [t1]
  
                      cmpps xmm1, xmm1, 0
  
                      xorps xmm0, xmm1
  
                      movups [t2], xmm0
                   end;
  
                   notv.ps := t2;
              end;
  
                constructor floatp4.v2(a,b,c,d: single);
                begin
                     mainPack[3]:= a;
  