int main ( ) { unsigned m,n; nod * prim1=NULL, *prim2=NULL, * cat, * rest, * aux; cout<<"Nr termeni primul polinom= "; cin>>m; creare ( prim1, m ); afiseaza ( prim1 ); cout<<"Nr termeni al doilea polinom= "; cin>>n; creare ( prim2, n ); afiseaza ( prim2 ); cout<<"suma:\n"; aux=adunare ( prim1, prim2 ); afiseaza ( aux ); cout<<"diferenta:\n"; aux=adunare ( prim1, negativ ( prim2 ) ); afiseaza ( aux ); cout<<"produs:\n"; aux=mul ( prim1, prim2 ); afiseaza ( aux ); cout<<"cat:\n"; divp ( prim1, prim2, cat, rest ); afiseaza ( cat ); cout<<"rest:\n"; aux=adunare ( prim1, prim2 ); if ( !rest ) cout<<"0"; else afiseaza ( rest ); getch ( ); return 0; }
void copyFunctionArg (const Box2i transformWindow, size_t firstSample, size_t numSamples, const FunctionArgPtr &src, const Slice &dst) { assert (src->isVarying()); if (dst.xSampling != 1 || dst.ySampling != 1) throwSliceSampling(); long w = transformWindow.max.x - transformWindow.min.x + 1; long x = transformWindow.min.x + modp (firstSample, w); long y = transformWindow.min.y + divp (firstSample, w); const char *srcData = (src->data()); size_t srcStride = src->type()->alignedObjectSize(); switch (dst.type) { case HALF: if (!src->type().cast<HalfType>()) throwDstSliceTypeMismatch (src, "HALF"); for (size_t i = 0; i < numSamples; ++i) { *(half *)(dst.base + x * dst.xStride + y * dst.yStride) = *(half *)srcData; srcData += srcStride; x += 1; if (x > transformWindow.max.x) { y += 1; x = transformWindow.min.x; } } break; case Imf::FLOAT: if (!src->type().cast<FloatType>()) throwDstSliceTypeMismatch (src, "FLOAT"); for (size_t i = 0; i < numSamples; ++i) { *(float *)(dst.base + x * dst.xStride + y * dst.yStride) = *(float *)srcData; srcData += srcStride; x += 1; if (x > transformWindow.max.x) { y += 1; x = transformWindow.min.x; } } break; case Imf::UINT: if (!src->type().cast<UIntType>()) throwDstSliceTypeMismatch (src, "UINT"); for (size_t i = 0; i < numSamples; ++i) { *(unsigned int *)(dst.base + x * dst.xStride + y * dst.yStride) = *(unsigned int *)srcData; srcData += srcStride; x += 1; if (x > transformWindow.max.x) { y += 1; x = transformWindow.min.x; } } break; } }
void copyFunctionArg (const Box2i transformWindow, size_t firstSample, size_t numSamples, const Slice &src, const FunctionArgPtr &dst) { assert (dst->isVarying()); if (src.xSampling != 1 || src.ySampling != 1) throwSliceSampling(); long w = transformWindow.max.x - transformWindow.min.x + 1; long x = transformWindow.min.x + modp (firstSample, w); long y = transformWindow.min.y + divp (firstSample, w); char *dstData = (dst->data()); size_t dstStride = dst->type()->alignedObjectSize(); switch (src.type) { case HALF: if (!dst->type().cast<HalfType>()) throwSrcSliceTypeMismatch ("HALF", dst); for (size_t i = 0; i < numSamples; ++i) { *(half *)dstData = *(half *)(src.base + x * src.xStride + y * src.yStride); dstData += dstStride; x += 1; if (x > transformWindow.max.x) { y += 1; x = transformWindow.min.x; } } break; case Imf::FLOAT: if (!dst->type().cast<FloatType>()) throwSrcSliceTypeMismatch ("FLOAT", dst); for (size_t i = 0; i < numSamples; ++i) { *(float *)dstData = *(float *)(src.base + x * src.xStride + y * src.yStride); dstData += dstStride; x += 1; if (x > transformWindow.max.x) { y += 1; x = transformWindow.min.x; } } break; case Imf::UINT: if (!dst->type().cast<UIntType>()) throwSrcSliceTypeMismatch ("UINT", dst); for (size_t i = 0; i < numSamples; ++i) { *(unsigned int *)dstData = *(unsigned int *)(src.base + x * src.xStride + y * src.yStride); dstData += dstStride; x += 1; if (x > transformWindow.max.x) { y += 1; x = transformWindow.min.x; } } break; default: // eat NUM_PIXELTYPES break; } }