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; }
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; }
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(); }