void CRoundRect::InitDragging(CPointF point) { CClientDC dc(m_pWnd); CElastic elastic(&dc,this); DrawRoundRectXY(&dc,m_rc.left,m_rc.top,m_pWnd->GetCapturePos().x,m_pWnd->GetCapturePos().y,m_fXEllipse,m_fYEllipse); DrawRoundRectXY(&dc,m_rc.left,m_rc.top,point.x,point.y,m_fXEllipse,m_fYEllipse); }
BOOL CGauge::OnDragStart(int nHitTest,CPointF point) { REAL dx = m_pWnd->GetStartPos().x; REAL dy = m_pWnd->GetStartPos().y; CRectF rc; GetBoundsRect(rc); rc.OffsetRect(-dx,-dy); BOOL bRet = FALSE; CClientDC dc(m_pWnd); CElastic elastic(&dc,this); CPoints pts; switch (nHitTest) { case TopLeft: PointHelper::RecalcPoints(m_rcBounds,CRectF(point.x,point.y,rc.right,rc.bottom),m_pts,pts); break; case Top: PointHelper::RecalcPoints(m_rcBounds,CRectF(rc.left,point.y,rc.right,rc.bottom),m_pts,pts); break; case TopRight: PointHelper::RecalcPoints(m_rcBounds,CRectF(rc.left,point.y,point.x,rc.bottom),m_pts,pts); break; case Right: PointHelper::RecalcPoints(m_rcBounds,CRectF(rc.left,rc.top,point.x,rc.bottom),m_pts,pts); break; case BottomRight: PointHelper::RecalcPoints(m_rcBounds,CRectF(rc.left,rc.top,point.x,point.y),m_pts,pts); break; case Bottom: PointHelper::RecalcPoints(m_rcBounds,CRectF(rc.left,rc.top,rc.right,point.y),m_pts,pts); break; case BottomLeft: PointHelper::RecalcPoints(m_rcBounds,CRectF(point.x,rc.top,rc.right,point.y),m_pts,pts); break; case Left: PointHelper::RecalcPoints(m_rcBounds,CRectF(point.x,rc.top,rc.right,rc.bottom),m_pts,pts); break; case Body: PointHelper::RecalcPoints(m_rcBounds,CRectF(rc.left,rc.top,rc.right,rc.bottom),m_pts,pts); bRet = TRUE; break; default: GetPoints(pts); PointHelper::OffsetPoints(pts,-dx,-dy); pts[nHitTest-HtIndex] = CPoint((int)point.x,(int)point.y); break; } dc.Polyline(pts.GetData(),(int)pts.GetCount()); return bRet; }
void CPie::InitDragging(CPointF point) { CClientDC dc(m_pWnd); CElastic elastic(&dc,this); DrawPieSEA(&dc,m_rc.left,m_rc.top,m_pWnd->GetCapturePos().x,m_pWnd->GetCapturePos().y,m_fStartAngel,m_fEndAngel); DrawPieSEA(&dc,m_rc.left,m_rc.top,point.x,point.y,m_fStartAngel,m_fEndAngel); }
void CGauge::InitDragging(CPointF point) { CPointF ptStart = m_pts[m_pts.GetCount()-1] ; CClientDC dc(m_pWnd); CElastic elastic(&dc,this); dc.MoveTo((int)ptStart.x,(int)ptStart.y); dc.LineTo((int)m_pWnd->GetCapturePos().x,(int)m_pWnd->GetCapturePos().y); dc.MoveTo((int)ptStart.x,(int)ptStart.y); dc.LineTo((int)point.x,(int)point.y); }
void CRoundRect::InitDrag(CPointF point) { m_rc.left = point.x; m_rc.top = point.y; m_fXEllipse = m_fYEllipse = 0.5; CClientDC dc(m_pWnd); CPen pen(PS_DOT,1,RGB(0,0,0)); CElastic elastic(&dc,this); DrawRoundRectXY(&dc,m_rc.left,m_rc.top,m_rc.left,m_rc.top,m_fXEllipse,m_fYEllipse); }
BOOL CRoundRect::OnDragStart(int nHitTest,CPointF point) { BOOL bRet = FALSE; CClientDC dc(m_pWnd); CElastic elastic(&dc,this); REAL dx = m_pWnd->GetStartPos().x; REAL dy = m_pWnd->GetStartPos().y; switch (nHitTest) { case TopLeft: DrawRoundRectXY(&dc,point.x,point.y,m_rc.right-dx,m_rc.bottom-dy,m_fXEllipse,m_fYEllipse); break; case Top: DrawRoundRectXY(&dc,m_rc.left-dx,point.y,m_rc.right-dx,m_rc.bottom-dy,m_fXEllipse,m_fYEllipse); break; case TopRight: DrawRoundRectXY(&dc,m_rc.left-dx,point.y,point.x,m_rc.bottom-dy,m_fXEllipse,m_fYEllipse); break; case Right: DrawRoundRectXY(&dc,m_rc.left-dx,m_rc.top-dy,point.x,m_rc.bottom-dy,m_fXEllipse,m_fYEllipse); break; case BottomRight: DrawRoundRectXY(&dc,m_rc.left-dx,m_rc.top-dy,point.x,point.y,m_fXEllipse,m_fYEllipse); break; case Bottom: DrawRoundRectXY(&dc,m_rc.left-dx,m_rc.top-dy,m_rc.right-dx,point.y,m_fXEllipse,m_fYEllipse); break; case BottomLeft: DrawRoundRectXY(&dc,point.x,m_rc.top-dy,m_rc.right-dx,point.y,m_fXEllipse,m_fYEllipse); break; case Left: DrawRoundRectXY(&dc,point.x,m_rc.top-dy,m_rc.right-dx,m_rc.bottom-dy,m_fXEllipse,m_fYEllipse); break; case Ellipse: DrawRoundRectXY(&dc,m_rc.left-dx,m_rc.top-dy,m_rc.right-dx,m_rc.bottom-dy,m_fXEllipse,m_fYEllipse); bRet = TRUE; break; case Body: DrawRoundRectXY(&dc,m_rc.left-dx,m_rc.top-dy,m_rc.right-dx,m_rc.bottom-dy,m_fXEllipse,m_fYEllipse); bRet = TRUE; break; default: ASSERT(FALSE); } return bRet; }
void CPie::InitDrag(CPointF point) { m_rc.left = point.x; m_rc.top = point.y; const REAL DEF_Start_ANGLE = 0.0; const REAL DEF_End_ANGLE = M_PI/2; m_fStartAngel = DEF_Start_ANGLE; m_fEndAngel = DEF_End_ANGLE; CClientDC dc(m_pWnd); CElastic elastic(&dc,this); DrawPieSEA(&dc,m_rc.left,m_rc.top,m_rc.left,m_rc.top,m_fStartAngel,m_fEndAngel); }
BOOL CPie::OnDragStart(int nHitTest,CPointF point) { BOOL bRet = TRUE; CClientDC dc(m_pWnd); CElastic elastic(&dc,this); REAL dx = m_pWnd->GetStartPos().x; REAL dy = m_pWnd->GetStartPos().y; switch (nHitTest) { case TopLeft: DrawPieSEA(&dc,point.x,point.y,m_rc.right-dx,m_rc.bottom-dy,m_fStartAngel,m_fEndAngel); break; case Top: DrawPieSEA(&dc,m_rc.left-dx,point.y,m_rc.right-dx,m_rc.bottom-dy,m_fStartAngel,m_fEndAngel); break; case TopRight: DrawPieSEA(&dc,m_rc.left-dx,point.y,point.x,m_rc.bottom-dy,m_fStartAngel,m_fEndAngel); break; case Right: DrawPieSEA(&dc,m_rc.left-dx,m_rc.top-dy,point.x,m_rc.bottom-dy,m_fStartAngel,m_fEndAngel); break; case BottomRight: DrawPieSEA(&dc,m_rc.left-dx,m_rc.top-dy,point.x,point.y,m_fStartAngel,m_fEndAngel); break; case Bottom: DrawPieSEA(&dc,m_rc.left-dx,m_rc.top-dy,m_rc.right-dx,point.y,m_fStartAngel,m_fEndAngel); break; case BottomLeft: DrawPieSEA(&dc,point.x,m_rc.top-dy,m_rc.right-dx,point.y,m_fStartAngel,m_fEndAngel); break; case Left: DrawPieSEA(&dc,point.x,m_rc.top-dy,m_rc.right-dx,m_rc.bottom-dy,m_fStartAngel,m_fEndAngel); break; case Start: case End: case Body: DrawPieSEA(&dc,m_rc.left-dx,m_rc.top-dy,m_rc.right-dx,m_rc.bottom-dy,m_fStartAngel,m_fEndAngel); break; } return bRet; }
void CRoundRect::OnDrag(int nHitTest,CPointF point) { REAL x,y; CClientDC dc(m_pWnd); CElastic elastic(&dc,this); REAL dx = m_pWnd->GetStartPos().x; REAL dy = m_pWnd->GetStartPos().y; switch (nHitTest) { case TopLeft: DrawRoundRectXY(&dc,m_pWnd->GetCapturePos().x,m_pWnd->GetCapturePos().y,m_rc.right-dx,m_rc.bottom-dy,m_fXEllipse,m_fYEllipse); DrawRoundRectXY(&dc,point.x,point.y,m_rc.right-dx,m_rc.bottom-dy,m_fXEllipse,m_fYEllipse); break; case Top: DrawRoundRectXY(&dc,m_rc.left-dx,m_pWnd->GetCapturePos().y,m_rc.right-dx,m_rc.bottom-dy,m_fXEllipse,m_fYEllipse); DrawRoundRectXY(&dc,m_rc.left-dx,point.y,m_rc.right-dx,m_rc.bottom-dy,m_fXEllipse,m_fYEllipse); break; case TopRight: DrawRoundRectXY(&dc,m_rc.left-dx,m_pWnd->GetCapturePos().y,m_pWnd->GetCapturePos().x,m_rc.bottom-dy,m_fXEllipse,m_fYEllipse); DrawRoundRectXY(&dc,m_rc.left-dx,point.y,point.x,m_rc.bottom-dy,m_fXEllipse,m_fYEllipse); break; case Right: DrawRoundRectXY(&dc,m_rc.left-dx,m_rc.top-dy,m_pWnd->GetCapturePos().x,m_rc.bottom-dy,m_fXEllipse,m_fYEllipse); DrawRoundRectXY(&dc,m_rc.left-dx,m_rc.top-dy,point.x,m_rc.bottom-dy,m_fXEllipse,m_fYEllipse); break; case BottomRight: DrawRoundRectXY(&dc,m_rc.left-dx,m_rc.top-dy,m_pWnd->GetCapturePos().x,m_pWnd->GetCapturePos().y,m_fXEllipse,m_fYEllipse); DrawRoundRectXY(&dc,m_rc.left-dx,m_rc.top-dy,point.x,point.y,m_fXEllipse,m_fYEllipse); break; case Bottom: DrawRoundRectXY(&dc,m_rc.left-dx,m_rc.top-dy,m_rc.right-dx,m_pWnd->GetCapturePos().y,m_fXEllipse,m_fYEllipse); DrawRoundRectXY(&dc,m_rc.left-dx,m_rc.top-dy,m_rc.right-dx,point.y,m_fXEllipse,m_fYEllipse); break; case BottomLeft: DrawRoundRectXY(&dc,m_pWnd->GetCapturePos().x,m_rc.top-dy,m_rc.right-dx,m_pWnd->GetCapturePos().y,m_fXEllipse,m_fYEllipse); DrawRoundRectXY(&dc,point.x,m_rc.top-dy,m_rc.right-dx,point.y,m_fXEllipse,m_fYEllipse); break; case Left: DrawRoundRectXY(&dc,m_pWnd->GetCapturePos().x,m_rc.top-dy,m_rc.right-dx,m_rc.bottom-dy,m_fXEllipse,m_fYEllipse); DrawRoundRectXY(&dc,point.x,m_rc.top-dy,m_rc.right-dx,m_rc.bottom-dy,m_fXEllipse,m_fYEllipse); break; case Ellipse: { REAL fWidth = m_rc.Width()*m_fXEllipse; REAL fHeight = m_rc.Height()*m_fYEllipse; x = m_pWnd->GetCapturePos().x-m_pWnd->GetMarkPos().x; y = m_pWnd->GetCapturePos().y-m_pWnd->GetMarkPos().y; DrawRoundRect(&dc,m_rc.left-dx,m_rc.top-dy,m_rc.right-dx,m_rc.bottom-dy,fWidth+x*2,fHeight+y*2); x = point.x-m_pWnd->GetMarkPos().x; y = point.y-m_pWnd->GetMarkPos().y; DrawRoundRect(&dc,m_rc.left-dx,m_rc.top-dy,m_rc.right-dx,m_rc.bottom-dy,fWidth+x*2,fHeight+y*2); } break; case Body: x = m_pWnd->GetCapturePos().x-m_pWnd->GetMarkPos().x-dx; y = m_pWnd->GetCapturePos().y-m_pWnd->GetMarkPos().y-dy; DrawRoundRectXY(&dc,m_rc.left+x,m_rc.top+y,m_rc.right+x,m_rc.bottom+y,m_fXEllipse,m_fYEllipse); x = point.x-m_pWnd->GetMarkPos().x-dx; y = point.y-m_pWnd->GetMarkPos().y-dy; DrawRoundRectXY(&dc,m_rc.left+x,m_rc.top+y,m_rc.right+x,m_rc.bottom+y,m_fXEllipse,m_fYEllipse); break; default: ASSERT(FALSE); break; } }
void CGauge::OnDrag(int nHitTest,CPointF point) { CRectF rc; GetBoundsRect(rc); REAL dx = m_pWnd->GetStartPos().x; REAL dy = m_pWnd->GetStartPos().y; rc.OffsetRect(-dx,-dy); CClientDC dc(m_pWnd); CElastic elastic(&dc,this); CPoints pts1,pts2; switch (nHitTest) { case TopLeft: PointHelper::RecalcPoints(m_rcBounds,CRectF(m_pWnd->GetCapturePos().x,m_pWnd->GetCapturePos().y,rc.right,rc.bottom),m_pts,pts1); PointHelper::RecalcPoints(m_rcBounds,CRectF(point.x,point.y,rc.right,rc.bottom),m_pts,pts2); break; case Top: PointHelper::RecalcPoints(m_rcBounds,CRectF(rc.left,m_pWnd->GetCapturePos().y,rc.right,rc.bottom),m_pts,pts1); PointHelper::RecalcPoints(m_rcBounds,CRectF(rc.left,point.y,rc.right,rc.bottom),m_pts,pts2); break; case TopRight: PointHelper::RecalcPoints(m_rcBounds,CRectF(rc.left,m_pWnd->GetCapturePos().y,m_pWnd->GetCapturePos().x,rc.bottom),m_pts,pts1); PointHelper::RecalcPoints(m_rcBounds,CRectF(rc.left,point.y,point.x,rc.bottom),m_pts,pts2); break; case Right: PointHelper::RecalcPoints(m_rcBounds,CRectF(rc.left,rc.top,m_pWnd->GetCapturePos().x,rc.bottom),m_pts,pts1); PointHelper::RecalcPoints(m_rcBounds,CRectF(rc.left,rc.top,point.x,rc.bottom),m_pts,pts2); break; case BottomRight: PointHelper::RecalcPoints(m_rcBounds,CRectF(rc.left,rc.top,m_pWnd->GetCapturePos().x,m_pWnd->GetCapturePos().y),m_pts,pts1); PointHelper::RecalcPoints(m_rcBounds,CRectF(rc.left,rc.top,point.x,point.y),m_pts,pts2); break; case Bottom: PointHelper::RecalcPoints(m_rcBounds,CRectF(rc.left,rc.top,rc.right,m_pWnd->GetCapturePos().y),m_pts,pts1); PointHelper::RecalcPoints(m_rcBounds,CRectF(rc.left,rc.top,rc.right,point.y),m_pts,pts2); break; case BottomLeft: PointHelper::RecalcPoints(m_rcBounds,CRectF(m_pWnd->GetCapturePos().x,rc.top,rc.right,m_pWnd->GetCapturePos().y),m_pts,pts1); PointHelper::RecalcPoints(m_rcBounds,CRectF(point.x,rc.top,rc.right,point.y),m_pts,pts2); break; case Left: PointHelper::RecalcPoints(m_rcBounds,CRectF(m_pWnd->GetCapturePos().x,rc.top,rc.right,rc.bottom),m_pts,pts1); PointHelper::RecalcPoints(m_rcBounds,CRectF(point.x,rc.top,rc.right,rc.bottom),m_pts,pts2); break; case Body: { REAL x = m_pWnd->GetCapturePos().x-m_pWnd->GetMarkPos().x; REAL y = m_pWnd->GetCapturePos().y-m_pWnd->GetMarkPos().y; PointHelper::RecalcPoints(m_rcBounds,CRectF(rc.left+x,rc.top+y,rc.right+x,rc.bottom+y),m_pts,pts1); x = point.x-m_pWnd->GetMarkPos().x; y = point.y-m_pWnd->GetMarkPos().y; PointHelper::RecalcPoints(m_rcBounds,CRectF(rc.left+x,rc.top+y,rc.right+x,rc.bottom+y),m_pts,pts2); } break; default: { GetPoints(pts1); PointHelper::OffsetPoints(pts1,-dx,-dy); pts1[nHitTest-HtIndex] = CPoint((int)m_pWnd->GetCapturePos().x,(int)m_pWnd->GetCapturePos().y); pts2.Copy(pts1); pts2[nHitTest-HtIndex] = CPoint((int)point.x,(int)point.y); } break; } dc.Polyline(pts1.GetData(),(int)pts1.GetCount()); dc.Polyline(pts2.GetData(),(int)pts2.GetCount()); }
void CPie::OnDrag(int nHitTest,CPointF point) { CClientDC dc(m_pWnd); CElastic elastic(&dc,this); REAL dx = m_pWnd->GetStartPos().x; REAL dy = m_pWnd->GetStartPos().y; REAL x = m_pWnd->GetCapturePos().x - m_pWnd->GetMarkPos().x - dx; REAL y = m_pWnd->GetCapturePos().y - m_pWnd->GetMarkPos().y - dy; REAL x1 = point.x-m_pWnd->GetMarkPos().x - x -dx; REAL y1 = point.y-m_pWnd->GetMarkPos().y - y - dy; switch (nHitTest) { case TopLeft: DrawPieSEA(&dc,m_pWnd->GetCapturePos().x,m_pWnd->GetCapturePos().y,m_rc.right-dx,m_rc.bottom-dy,m_fStartAngel,m_fEndAngel); DrawPieSEA(&dc,point.x,point.y,m_rc.right-dx,m_rc.bottom-dy,m_fStartAngel,m_fEndAngel); break; case Top: DrawPieSEA(&dc,m_rc.left-dx,m_pWnd->GetCapturePos().y,m_rc.right-dx,m_rc.bottom-dy,m_fStartAngel,m_fEndAngel); DrawPieSEA(&dc,m_rc.left-dx,point.y,m_rc.right-dx,m_rc.bottom-dy,m_fStartAngel,m_fEndAngel); break; case TopRight: DrawPieSEA(&dc,m_rc.left-dx,m_pWnd->GetCapturePos().y,m_pWnd->GetCapturePos().x,m_rc.bottom-dy,m_fStartAngel,m_fEndAngel); DrawPieSEA(&dc,m_rc.left-dx,point.y,point.x,m_rc.bottom-dy,m_fStartAngel,m_fEndAngel); break; case Right: DrawPieSEA(&dc,m_rc.left-dx,m_rc.top-dy,m_pWnd->GetCapturePos().x,m_rc.bottom-dy,m_fStartAngel,m_fEndAngel); DrawPieSEA(&dc,m_rc.left-dx,m_rc.top-dy,point.x,m_rc.bottom-dy,m_fStartAngel,m_fEndAngel); break; case BottomRight: DrawPieSEA(&dc,m_rc.left,m_rc.top,m_pWnd->GetCapturePos().x,m_pWnd->GetCapturePos().y,m_fStartAngel,m_fEndAngel); DrawPieSEA(&dc,m_rc.left,m_rc.top,point.x,point.y,m_fStartAngel,m_fEndAngel); break; case Bottom: DrawPieSEA(&dc,m_rc.left-dx,m_rc.top-dy,m_rc.right-dx,m_pWnd->GetCapturePos().y,m_fStartAngel,m_fEndAngel); DrawPieSEA(&dc,m_rc.left-dx,m_rc.top-dy,m_rc.right-dx,point.y,m_fStartAngel,m_fEndAngel); break; case BottomLeft: DrawPieSEA(&dc,m_pWnd->GetCapturePos().x,m_rc.top-dy,m_rc.right-dx,m_pWnd->GetCapturePos().y,m_fStartAngel,m_fEndAngel); DrawPieSEA(&dc,point.x,m_rc.top-dy,m_rc.right-dx,point.y,m_fStartAngel,m_fEndAngel); break; case Left: DrawPieSEA(&dc,m_pWnd->GetCapturePos().x,m_rc.top-dy,m_rc.right-dx,m_rc.bottom-dy,m_fStartAngel,m_fEndAngel); DrawPieSEA(&dc,point.x,m_rc.top-dy,m_rc.right-dx,m_rc.bottom-dy,m_fStartAngel,m_fEndAngel); break; case Start: { CPointF pt = GetStartPoint(); pt.Offset(x,y); DrawPieEA(&dc,m_rc.left-dx,m_rc.top-dy,m_rc.right-dx,m_rc.bottom-dy,pt.x,pt.y,m_fEndAngel); pt.Offset(x1,y1); DrawPieEA(&dc,m_rc.left-dx,m_rc.top-dy,m_rc.right-dx,m_rc.bottom-dy,pt.x,pt.y,m_fEndAngel); } break; case End: { CPointF pt(GetEndPoint()); pt.Offset(x,y); DrawPieSA(&dc,m_rc.left-dx,m_rc.top-dy,m_rc.right-dx,m_rc.bottom-dy,m_fStartAngel,pt.x,pt.y); pt.Offset(x1,y1); DrawPieSA(&dc,m_rc.left-dx,m_rc.top-dy,m_rc.right-dx,m_rc.bottom-dy,m_fStartAngel,pt.x,pt.y); } break; case Body: { CRectF rc(m_rc); rc.OffsetRect(x,y); DrawPieSEA(&dc,rc.left,rc.top,rc.right,rc.bottom,m_fStartAngel,m_fEndAngel); rc.OffsetRect(x1,y1); DrawPieSEA(&dc,rc.left,rc.top,rc.right,rc.bottom,m_fStartAngel,m_fEndAngel); } break; default: ASSERT(FALSE); break; } }
int main( int argc, /* arg count */ char * argv[] /* arg vector */ ){ static char * context = "main(chain)"; char * stem = NULL; /* dump filename stem */ char * suffix = NULL; /* dump filename suffix */ char * suff2 = NULL; /* last half of suffix */ int nr, nc; /* integer matrix sizes */ int n; /* square matrix/vector size */ real base_x, base_y; /* base of Mandelbrot */ real ext_x, ext_y; /* extent of Mandelbrot */ int limit, seed; /* randmat controls */ real fraction; /* invperc/thresh filling */ int itersLife; /* life iterations */ int itersElastic, relax; /* elastic controls */ int2D i2D; /* integer matrix */ bool2D b2D; /* boolean matrix */ pt1D cities; /* cities point vector */ int n_cities; /* number of cities */ pt1D net; /* net point vector */ int n_net; /* number of net points */ real2D r2D_gauss; /* real matrix for Gaussian */ real2D r2D_sor; /* real matrix for SOR */ real1D r1D_gauss_v; /* real vector input for Gaussian */ real1D r1D_sor_v; /* real vector input for SOR */ real1D r1D_gauss_a; /* real vector answer for Gaussian */ real1D r1D_sor_a; /* real vector answer for SOR */ real1D r1D_gauss_c; /* real vector check for Gaussian */ real1D r1D_sor_c; /* real vector check for SOR */ real tol; /* SOR tolerance */ real realDiff; /* vector difference */ bool choicesSet = FALSE; /* path choices set? */ bool doMandel = TRUE; /* mandel vs. randmat */ bool doInvperc = TRUE; /* invperc vs. thresholding */ bool doDump = FALSE; /* dump intermediate results? */ int argd = 1; /* argument index */ /* arguments */ #if NUMA MAIN_INITENV(,32000000) #endif while (argd < argc){ CHECK(argv[argd][0] == '-', fail(context, "bad argument", "index", "%d", argd, NULL)); switch(argv[argd][1]){ case 'E' : /* elastic */ itersElastic = arg_int(context, argc, argv, argd+1, argv[argd]); relax = arg_int(context, argc, argv, argd+2, argv[argd]); argd += 3; break; case 'F' : /* fraction (invperc/thresh) */ fraction = arg_real(context, argc, argv, argd+1, argv[argd]); argd += 2; break; case 'L' : /* life */ itersLife = arg_int(context, argc, argv, argd+1, argv[argd]); argd += 2; break; case 'M' : /* mandel */ base_x = arg_real(context, argc, argv, argd+1, argv[argd]); base_y = arg_real(context, argc, argv, argd+2, argv[argd]); ext_x = arg_real(context, argc, argv, argd+3, argv[argd]); ext_y = arg_real(context, argc, argv, argd+4, argv[argd]); argd += 5; break; case 'N' : /* winnow */ n_cities = arg_int(context, argc, argv, argd+1, argv[argd]); argd += 2; break; case 'R' : /* randmat */ limit = arg_int(context, argc, argv, argd+1, argv[argd]); seed = arg_int(context, argc, argv, argd+2, argv[argd]); argd += 3; break; case 'S' : /* matrix size */ nr = arg_int(context, argc, argv, argd+1, argv[argd]); nc = arg_int(context, argc, argv, argd+2, argv[argd]); argd += 3; break; case 'T' : /* SOR tolerance */ tol = arg_real(context, argc, argv, argd+1, argv[argd]); argd += 2; break; case 'c' : /* choice */ CHECK(!choicesSet, fail(context, "choices already set", NULL)); suffix = arg_str(context, argc, argv, argd+1, argv[argd]); argd += 2; switch(suffix[0]){ case 'i' : doInvperc = TRUE; break; case 't' : doInvperc = FALSE; break; default : fail(context, "unknown choice(s)", "choice", "%s", suffix, NULL); } switch(suffix[1]){ case 'm' : doMandel = TRUE; break; case 'r' : doMandel = FALSE; break; default : fail(context, "unknown choice(s)", "choice", "%s", suffix, NULL); } suff2 = suffix+1; choicesSet = TRUE; break; case 'd' : /* dump */ doDump = TRUE; argd += 1; if ((argd < argc) && (argv[argd][0] != '-')){ stem = arg_str(context, argc, argv, argd, argv[argd-1]); argd += 1; } break; #if GRAPHICS case 'g' : gfx_open(app_chain, arg_gfxCtrl(context, argc, argv, argd+1, argv[argd])); argd += 2; break; #endif #if MIMD case 'p' : DataDist = arg_dataDist(context, argc, argv, argd+1, argv[argd]); ParWidth = arg_int(context, argc, argv, argd+2, argv[argd]); argd += 3; break; #endif case 'u' : io_init(FALSE); argd += 1; break; default : fail(context, "unknown flag", "flag", "%s", argv[argd], NULL); break; } } CHECK(choicesSet, fail("context", "choices not set using -c flag", NULL)); /* initialize */ #if MIMD sch_init(DataDist); #endif /* mandel vs. randmat */ if (doMandel){ mandel(i2D, nr, nc, base_x, base_y, ext_x, ext_y); if (doDump) io_wrInt2D(context, mkfname(stem, NULL, suff2, "i2"), i2D, nr, nc); } else { randmat(i2D, nr, nc, limit, seed); if (doDump) io_wrInt2D(context, mkfname(stem, NULL, suff2, "i2"), i2D, nr, nc); } /* half */ half(i2D, nr, nc); if (doDump) io_wrInt2D(context, mkfname(stem, "h", suff2, "i2"), i2D, nr, nc); /* invperc vs. thresh */ if (doInvperc){ invperc(i2D, b2D, nr, nc, fraction); if (doDump) io_wrBool2D(context, mkfname(stem, NULL, suffix, "b2"), b2D, nr, nc); } else { thresh(i2D, b2D, nr, nc, fraction); if (doDump) io_wrBool2D(context, mkfname(stem, NULL, suffix, "b2"), b2D, nr, nc); } /* life */ life(b2D, nr, nc, itersLife); if (doDump) io_wrBool2D(context, mkfname(stem, "l", suffix, "b2"), b2D, nr, nc); /* winnow */ winnow(i2D, b2D, nr, nc, cities, n_cities); if (doDump) io_wrPt1D(context, mkfname(stem, "w", suffix, "p1"), cities, n_cities); /* norm */ norm(cities, n_cities); if (doDump) io_wrPt1D(context, mkfname(stem, "n", suffix, "p1"), cities, n_cities); /* elastic */ n_net = (int)(ELASTIC_RATIO * n_cities); CHECK(n_net <= MAXEXT, fail(context, "too many net points required", "number of net points", "%d", n_net, NULL)); elastic(cities, n_cities, net, n_net, itersElastic, relax); if (doDump) io_wrPt1D(context, mkfname(stem, "e", suffix, "p1"), net, n_net); /* outer */ n = n_net; outer(net, r2D_gauss, r1D_gauss_v, n); if (doDump){ io_wrReal2D(context, mkfname(stem, "o", suffix, "r2"), r2D_gauss, n, n); io_wrReal1D(context, mkfname(stem, "o", suffix, "r1"), r1D_gauss_v, n); } cpReal2D(r2D_gauss, r2D_sor, n, n); cpReal1D(r1D_gauss_v, r1D_sor_v, n); /* gauss */ gauss(r2D_gauss, r1D_gauss_v, r1D_gauss_a, n); if (doDump) io_wrReal1D(context, mkfname(stem, "g", suffix, "r1"), r1D_gauss_a, n); /* product (gauss) */ product(r2D_gauss, r1D_gauss_a, r1D_gauss_c, n, n); if (doDump) io_wrReal1D(context, mkfname(stem, "pg", suffix, "r1"), r1D_gauss_c, n); /* sor */ sor(r2D_sor, r1D_sor_v, r1D_sor_a, n, tol); if (doDump) io_wrReal1D(context, mkfname(stem, "s", suffix, "r1"), r1D_gauss_a, n); /* product (sor) */ product(r2D_sor, r1D_sor_a, r1D_sor_c, n, n); if (doDump) io_wrReal1D(context, mkfname(stem, "ps", suffix, "r1"), r1D_gauss_c, n); /* difference */ vecdiff(r1D_gauss_a, r1D_sor_a, n, &realDiff); if (doDump) io_wrReal0D(context, mkfname(stem, "v", suffix, "r0"), realDiff); #if IEEE ieee_retrospective(stderr); #endif #if NUMA MAIN_END; #endif return 0; }