Beispiel #1
0
 TheTest & test_float_absdiff()
 {
     Data<R> dataA(std::numeric_limits<LaneType>::max()),
             dataB(std::numeric_limits<LaneType>::min());
     dataA[0] = -1;
     dataB[0] = 1;
     dataA[1] = 2;
     dataB[1] = -2;
     R a = dataA, b = dataB;
     Data<R> resC = v_absdiff(a, b);
     for (int i = 0; i < R::nlanes; ++i)
     {
         EXPECT_EQ(dataA[i] > dataB[i] ? dataA[i] - dataB[i] : dataB[i] - dataA[i], resC[i]);
     }
     return *this;
 }
Beispiel #2
0
 TheTest & test_absdiff()
 {
     typedef typename V_RegTrait128<LaneType>::u_reg Ru;
     typedef typename Ru::lane_type u_type;
     Data<R> dataA(std::numeric_limits<LaneType>::max()),
             dataB(std::numeric_limits<LaneType>::min());
     dataA[0] = (LaneType)-1;
     dataB[0] = 1;
     dataA[1] = 2;
     dataB[1] = (LaneType)-2;
     R a = dataA, b = dataB;
     Data<Ru> resC = v_absdiff(a, b);
     const u_type mask = std::numeric_limits<LaneType>::is_signed ? (u_type)(1 << (sizeof(u_type)*8 - 1)) : 0;
     for (int i = 0; i < Ru::nlanes; ++i)
     {
         u_type uA = dataA[i] ^ mask;
         u_type uB = dataB[i] ^ mask;
         EXPECT_EQ(uA > uB ? uA - uB : uB - uA, resC[i]);
     }
     return *this;
 }
Beispiel #3
0
TVConnectionInfo::TVConnectionInfo(MeshTopoData *ld)
{
	mMd = ld;
	{
		mVertex.SetCount(ld->GetNumberTVVerts());
		for (int vertexIndex = 0; vertexIndex < ld->GetNumberTVVerts(); vertexIndex++)
		{
			mVertex[vertexIndex] = new Vertex();
		}
		for (int edgeIndex = 0; edgeIndex < ld->GetNumberTVEdges(); edgeIndex++)
		{
			BOOL hiddenEdge = ld->GetTVEdgeHidden(edgeIndex);
			int a = ld->GetTVEdgeVert(edgeIndex,0);
			int b = ld->GetTVEdgeVert(edgeIndex,1);
			int fct = ld->GetTVEdgeNumberTVFaces(edgeIndex);
			int fa = -1;
			int fb = -1;
			if (fct == 1)
			{
				fa = ld->GetTVEdgeConnectedTVFace(edgeIndex,0);
			}
			else if (fct == 2)
			{
				fa = ld->GetTVEdgeConnectedTVFace(edgeIndex,0);
				fb = ld->GetTVEdgeConnectedTVFace(edgeIndex,1);
			}
			//else bad edge skip it

			VertexConnectedTo dataA(a,edgeIndex,fct,fa,fb,hiddenEdge);
			VertexConnectedTo dataB(b,edgeIndex,fct,fa,fb,hiddenEdge);
			mVertex[a]->mConnectedTo.Append(1,&dataB,4);
			mVertex[b]->mConnectedTo.Append(1,&dataA,4);
			mVertex[a]->AddFace(fa);
			mVertex[a]->AddFace(fb);
			mVertex[b]->AddFace(fa);
			mVertex[b]->AddFace(fb);
		}
	}
	OrderLists();
}