anchor.diff:                   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;
  
positive.code: operator - (para1, para2: floatp4) sub: floatp4;
  operator * (para1, para2: floatp4) mul: floatp4;
  operator / (para1, para2: floatp4) divide: floatp4;
  operator and (para1, para2: floatp4) andv: floatp4;
  operator or (para1, para2: floatp4) orv: floatp4;
  operator xor (para1, para2: floatp4) xorv: floatp4;
  
  function Dot(para1,para2: floatp4; dotsize: byte): single;
  function Max(para1,para2: floatp4): floatp4;
  function Min(para1,para2: floatp4): floatp4;
  function Sqrt(para1, para2: floatp4): floatp4;
  
  implementation
  
                constructor floatp4.Crt5198(a: TArr1Single);
                begin
  
negative.code:               //is a intric name dpps. I cant let you pass an imm8
                //because i cant
  
                //Dot product of two floatp4
                function Dot(para1,para2: floatp4): single;
                const dotsize1 = 5;
                var t1,t2,t3, arr1, arr2: TArr1Single;
                    i: shortint;
                begin
  