static void sse_test (void) { assert (ys (1) == xs ()); assert (ys (2) == xs () * 2); assert (yd (1) == xd ()); assert (yd (2) == xd () * 2); }
int main() { unsigned long cpu_facilities; cpu_facilities = i386_cpuid (); if (cpu_facilities & bit_SSE) { assert (ys (1) == xs ()); assert (ys (2) == xs () * 2); assert (yd (1) == xd ()); assert (yd (2) == xd () * 2); } return 0; }
void QgsCoordinateTransform::transformInPlace( QVector<float> &x, QVector<float> &y, QVector<float> &z, TransformDirection direction ) const { if ( !d->mIsValid || d->mShortCircuit ) return; Q_ASSERT( x.size() == y.size() ); // Apparently, if one has a std::vector, it is valid to use the // address of the first element in the vector as a pointer to an // array of the vectors data, and hence easily interface with code // that wants C-style arrays. try { //copy everything to double vectors since proj needs double int vectorSize = x.size(); QVector<double> xd( x.size() ); QVector<double> yd( y.size() ); QVector<double> zd( z.size() ); double *destX = xd.data(); double *destY = yd.data(); double *destZ = zd.data(); const float *srcX = x.constData(); const float *srcY = y.constData(); const float *srcZ = z.constData(); for ( int i = 0; i < vectorSize; ++i ) { *destX++ = static_cast< double >( *srcX++ ); *destY++ = static_cast< double >( *srcY++ ); *destZ++ = static_cast< double >( *srcZ++ ); } transformCoords( x.size(), &xd[0], &yd[0], &zd[0], direction ); //copy back float *destFX = x.data(); float *destFY = y.data(); float *destFZ = z.data(); const double *srcXD = xd.constData(); const double *srcYD = yd.constData(); const double *srcZD = zd.constData(); for ( int i = 0; i < vectorSize; ++i ) { *destFX++ = static_cast< float >( *srcXD++ ); *destFY++ = static_cast< float >( *srcYD++ ); *destFZ++ = static_cast< float >( *srcZD++ ); } } catch ( QgsCsException & ) { // rethrow the exception QgsDebugMsg( QStringLiteral( "rethrowing exception" ) ); throw; } }
void StandardModel<Two_scale>::set(const DoubleVector& y) { int i, j, k = 0; for (i = 1; i <= 3; i++) for (j = 1; j <= 3; j++) { k++; yu(i, j) = y.display(k); yd(i, j) = y.display(k + 9); ye(i, j) = y.display(k + 18); } k = 27; for (i = 1; i <= 3; i++) { k++; g(i) = y.display(k); } }
void StandardModel<Two_scale>::setYukawaElement(yukawa k, int i, int j, double f) { switch (k) { case YU: yu(i, j) = f; break; case YD: yd(i, j) = f; break; case YE: ye(i, j) = f; break; default: assert(false && "StandardModel<Two_scale>::setYukawaElement called with illegal k"); break; } }
void QgsCoordinateTransform::transformInPlace( QVector<float>& x, QVector<float>& y, QVector<float>& z, TransformDirection direction ) const { if ( mShortCircuit || !mInitialisedFlag ) return; Q_ASSERT( x.size() == y.size() ); // Apparently, if one has a std::vector, it is valid to use the // address of the first element in the vector as a pointer to an // array of the vectors data, and hence easily interface with code // that wants C-style arrays. try { //copy everything to double vectors since proj needs double int vectorSize = x.size(); QVector<double> xd( x.size() ); QVector<double> yd( y.size() ); QVector<double> zd( z.size() ); for ( int i = 0; i < vectorSize; ++i ) { xd[i] = x[i]; yd[i] = y[i]; zd[i] = z[i]; } transformCoords( x.size(), &xd[0], &yd[0], &zd[0], direction ); //copy back for ( int i = 0; i < vectorSize; ++i ) { x[i] = xd[i]; y[i] = yd[i]; z[i] = zd[i]; } } catch ( QgsCsException & ) { // rethrow the exception QgsDebugMsg( "rethrowing exception" ); throw; } }
//Initialize Points void CalibrationUtils::initScreenPoints() { int p = 0; vector2df xd(screenBB.lowerRightCorner.X-screenBB.upperLeftCorner.X,0.0f); vector2df yd(0.0f, screenBB.lowerRightCorner.Y-screenBB.upperLeftCorner.Y); xd /= (float) GRID_X; yd /= (float) GRID_Y; for(int j = 0; j <= GRID_Y; j++) { for(int i = 0; i <= GRID_X; i++) { screenPoints[p] = screenBB.upperLeftCorner + xd*i + yd*j; //printf("(%d, %d) = (%f, %f)\n", i, j, screenPoints[p].X, screenPoints[p].Y); p++; } } }
bool plotNoiseStandardDeviation(const hoNDArray< std::complex<T> >& m, const std::vector<std::string>& coilStrings, const std::string& xlabel, const std::string& ylabel, const std::string& title, size_t xsize, size_t ysize, bool trueColor, hoNDArray<float>& plotIm) { try { size_t CHA = m.get_size(0); GADGET_CHECK_RETURN_FALSE(coilStrings.size() == CHA); hoNDArray<double> xd, yd, yd2; xd.create(CHA); yd.create(CHA); size_t c; for (c = 0; c < CHA; c++) { xd(c) = c+1; yd(c) = std::sqrt( std::abs(m(c, c)) ); } double maxY = Gadgetron::max(&yd); yd2 = yd; std::sort(yd2.begin(), yd2.end()); double medY = yd2(CHA / 2); // increase dot line to be 1 sigma ~= 33% double medRange = 0.33; if (maxY < medY*(1 + medRange)) { maxY = medY*(1 + medRange); } hoNDArray<unsigned char> im; im.create(3, xsize, ysize); Gadgetron::clear(im); plsdev("mem"); plsmem(im.get_size(1), im.get_size(2), im.begin()); plinit(); plfont(2); pladv(0); plvpor(0.15, 0.75, 0.1, 0.8); plwind(0, CHA+1, 0, maxY*1.05); plcol0(15); plbox("bcnst", 0.0, 0, "bcnstv", 0.0, 0); std::string gly; getPlotGlyph(0, gly); // circle plstring(CHA, xd.begin(), yd.begin(), gly.c_str()); // draw the median line pllsty(1); double px[2], py[2]; px[0] = 0; px[1] = CHA+1; py[0] = medY; py[1] = medY; plline(2, px, py); pllsty(2); py[0] = medY*(1 - medRange); py[1] = medY*(1 - medRange); plline(2, px, py); py[0] = medY*(1 + medRange); py[1] = medY*(1 + medRange); plline(2, px, py); plmtex("b", 3.2, 0.5, 0.5, xlabel.c_str()); plmtex("t", 2.0, 0.5, 0.5, title.c_str()); plmtex("l", 5.0, 0.5, 0.5, ylabel.c_str()); // draw the legend std::vector<PLINT> opt_array(CHA), text_colors(CHA), line_colors(CHA), line_styles(CHA), symbol_numbers(CHA), symbol_colors(CHA); std::vector<PLFLT> symbol_scales(CHA), line_widths(CHA), box_scales(CHA, 1); std::vector<const char*> symbols(CHA); PLFLT legend_width, legend_height; std::vector<const char*> legend_text(CHA); std::vector<std::string> legends(CHA); size_t n; for (n = 0; n < CHA; n++) { opt_array[n] = PL_LEGEND_SYMBOL; text_colors[n] = 15; line_colors[n] = 15; line_styles[n] = (n % 8 + 1); line_widths[n] = 0.2; symbol_colors[n] = 15; symbol_scales[n] = 0.75; symbol_numbers[n] = 1; symbols[n] = gly.c_str(); std::ostringstream ostr; ostr << n+1 << ":" << coilStrings[n]; legends[n] = ostr.str(); legend_text[n] = legends[n].c_str(); } pllegend(&legend_width, &legend_height, PL_LEGEND_BACKGROUND, PL_POSITION_OUTSIDE | PL_POSITION_RIGHT, 0.02, // x 0.0, // y 0.05, // plot_width 0, // bg_color 15, // bb_color 1, // bb_style 0, // nrow 0, // ncolumn CHA, // nlegend &opt_array[0], 0.05, // text_offset 0.5, // text_scale 1.0, // text_spacing 0.5, // text_justification &text_colors[0], (const char **)(&legend_text[0]), NULL, // box_colors NULL, // box_patterns &box_scales[0], // box_scales NULL, // box_line_widths &line_colors[0], &line_styles[0], &line_widths[0], &symbol_colors[0], &symbol_scales[0], &symbol_numbers[0], (const char **)(&symbols[0]) ); plend(); outputPlotIm(im, trueColor, plotIm); } catch (...) { GERROR_STREAM("Errors happened in plotNoiseStandardDeviation(...) ... "); return false; } return true; }
Transformation Boonas:: parseParams(int start, int argc, char** argv, Transformation matrix) { QString currIn; for(int i = start; i < (argc - 1); i += 2) // iterate through parameters skiping every other { if(strcmp(argv[i], "XT") == 0) { currIn = argv[i + 1]; matrix = xt(currIn.toFloat(), matrix); } else if(strcmp(argv[i], "YT") == 0) { currIn = argv[i + 1]; matrix = yt(currIn.toFloat(), matrix); } else if(strcmp(argv[i], "ZT") == 0) { currIn = argv[i + 1]; matrix = zt(currIn.toFloat(), matrix); } else if(strcmp(argv[i], "XS") == 0) { currIn = argv[i + 1]; matrix = xs(currIn.toFloat(), matrix); } else if(strcmp(argv[i], "YS") == 0) { currIn = argv[i + 1]; matrix = ys(currIn.toFloat(), matrix); } else if(strcmp(argv[i], "ZS") == 0) { currIn = argv[i + 1]; matrix = zs(currIn.toFloat(), matrix); } else if(strcmp(argv[i], "US") == 0) { currIn = argv[i + 1]; matrix = us(currIn.toFloat(), matrix); } else if(strcmp(argv[i], "XD") == 0) { currIn = argv[i + 1]; matrix = xd(currIn.toFloat(), matrix); } else if(strcmp(argv[i], "YD") == 0) { currIn = argv[i + 1]; matrix = yd(currIn.toFloat(), matrix); } else if(strcmp(argv[i], "ZD") == 0) { currIn = argv[i + 1]; matrix = zd(currIn.toFloat(), matrix); } else if(strcmp(argv[i], "XR") == 0) { currIn = argv[i + 1]; matrix = xr(currIn.toFloat(), matrix); } else if(strcmp(argv[i], "YR") == 0) { currIn = argv[i + 1]; matrix = yr(currIn.toFloat(), matrix); } else // MUST BE ZR { currIn = argv[i + 1]; matrix = zr(currIn.toFloat(), matrix); } } return matrix; }