Пример #1
0
 // Better table
 void ImprovedTable(wxArrayString& header,wxArrayPtrVoid& data)
 {
   // Column widths
   double w[4] = {40,35,40,45};
   // Header
   size_t i;
   for (i = 0; i <header.GetCount(); i++)
   {
     Cell(w[i],7,header[i],wxPDF_BORDER_FRAME,0,wxPDF_ALIGN_CENTER);
   }
   Ln();
   // Data
   size_t j;
   for (j = 0; j < data.GetCount(); j++)
   {
     wxArrayString* row = (wxArrayString*) data[j];
     Cell(w[0],6,(*row)[0],wxPDF_BORDER_LEFT | wxPDF_BORDER_RIGHT);
     Cell(w[1],6,(*row)[1],wxPDF_BORDER_LEFT | wxPDF_BORDER_RIGHT);
     Cell(w[2],6,(*row)[2],wxPDF_BORDER_LEFT | wxPDF_BORDER_RIGHT,0,wxPDF_ALIGN_RIGHT);
     Cell(w[3],6,(*row)[3],wxPDF_BORDER_LEFT | wxPDF_BORDER_RIGHT,0,wxPDF_ALIGN_RIGHT);
     Ln();
   }
   // Closure line
   Cell((w[0]+w[1]+w[2]+w[3]),0,wxS(""),wxPDF_BORDER_TOP);
 }
Пример #2
0
 // Colored table
 void FancyTable(wxArrayString& header, wxArrayPtrVoid& data)
 {
   // Colors, line width and bold font
   SetFillColour(wxColour(255,0,0));
   SetTextColour(255);
   SetDrawColour(wxColour(128,0,0));
   SetLineWidth(.3);
   SetFont(wxS(""),wxS("B"));
   //Header
   double w[4] = {40,35,40,45};
   size_t i;
   for (i = 0; i < header.GetCount(); i++)
   {
     Cell(w[i],7,header[i],wxPDF_BORDER_FRAME, 0, wxPDF_ALIGN_CENTER, 1);
   }
   Ln();
   // Color and font restoration
   SetFillColour(wxColour(224,235,255));
   SetTextColour(0);
   SetFont(wxS(""));
   // Data
   int fill = 0;
   size_t j;
   for (j = 0; j < data.GetCount(); j++)
   {
     wxArrayString* row = (wxArrayString*) data[j];
     Cell(w[0],6,(*row)[0],wxPDF_BORDER_LEFT | wxPDF_BORDER_RIGHT,0,wxPDF_ALIGN_LEFT,fill);
     Cell(w[1],6,(*row)[1],wxPDF_BORDER_LEFT | wxPDF_BORDER_RIGHT,0,wxPDF_ALIGN_LEFT,fill);
     Cell(w[2],6,(*row)[2],wxPDF_BORDER_LEFT | wxPDF_BORDER_RIGHT,0,wxPDF_ALIGN_RIGHT,fill);
     Cell(w[3],6,(*row)[3],wxPDF_BORDER_LEFT | wxPDF_BORDER_RIGHT,0,wxPDF_ALIGN_RIGHT,fill);
     Ln();
     fill = 1 - fill;
   }
   Cell((w[0]+w[1]+w[2]+w[3]),0,wxS(""),wxPDF_BORDER_TOP);
 }
Пример #3
0
int main(int argc, char *argv[]) {

  Halide::Func data_mat;
  Halide::Var row, col, ki, iter;
  //Halide::Expr e = row + col;
  // initialize data matrix
  data_mat(row, col) = 1.0f;

  // initialize model matrix L, R
  Halide::Func L, R;
  L(row, ki) = 1.0f;
  R(ki, col) = 1.0f;

  Halide::Func approx_mat;
  approx_mat(row, col) = 0.0f;

  Halide::RDom k(0, kRank);
  approx_mat(row, col) = approx_mat(row, col) + L(row, k) * R(k, col);

  Halide::Func diff_mat;
  diff_mat(row, col) = approx_mat(row, col) - data_mat(row, col);

  Halide::Func Ln, Rn;
  Ln(row, ki) = 1.0f;
  Rn(ki, col) = 1.0f;
  Halide::RDom c(0, kWidth);
  Ln(row, ki) = L(row, ki) - step_size * diff_mat(row, c) * R(ki, c);
  Halide::RDom r(0, kHeight);
  Rn(ki, col) = R(ki, col) - step_size * diff_mat(r, col) * L(r, ki);

  Halide::Image<float> Ln_output = Ln.realize(kHeight, kRank);
  Halide::Image<float> Rn_output = Rn.realize(kRank, kWidth);

  for (int i = 0; i < Ln_output.height(); i++) {
    std::cout << i << " - ";
    for (int j = 0; j < Ln_output.width(); j++) {
      std::cout << j <<":" << Ln_output(i, j) << " ";
    }
    std::cout << std::endl;
  }

  for (int i = 0; i < Rn_output.height(); i++) {
    std::cout << i << " - ";
    for (int j = 0; j < Rn_output.width(); j++) {
      std::cout << j <<":" << Rn_output(i, j) << " ";
    }
    std::cout << std::endl;
  }

  std::cout << "Success!" << std::endl;
  return 0;
}
Пример #4
0
 // Simple table
 void BasicTable(wxArrayString& header,wxArrayPtrVoid& data)
 {
   size_t j;
   // Header
   for (j = 0; j < header.GetCount(); j++)
   {
     Cell(40,7,header[j],wxPDF_BORDER_FRAME);
   }
   Ln();
   // Data
   for (j = 0; j < data.GetCount(); j++)
   {
     wxArrayString* row = (wxArrayString*) data[j];
     size_t k;
     for (k = 0; k < (*row).GetCount(); k++)
     {
       Cell(40,6,(*row)[k],wxPDF_BORDER_FRAME);
     }
     Ln();
   }
 }
Пример #5
0
 // Page header
 void Header()
 {
   // Logo
   Image(wxS("wxpdfdoc.png"),10,8,28);
   // Helvetica bold 15
   SetFont(wxS("Helvetica"),wxS("B"),15);
   // Move to the right
   Cell(80);
   // Title
   Cell(30,10,wxS("Title"),wxPDF_BORDER_FRAME,0,wxPDF_ALIGN_CENTER);
   // Line break
   Ln(20);
 }
Пример #6
0
U0 Zoom(F64 d)
{
  F64 sx,sy,wx,wy;
  I64 i,x=ipx,y=ipy;
  d=Exp(Ln(d)/ZOOM_STEPS);
  for (i=0;i<ZOOM_STEPS;i++) {
    S2W(x,y,&wx,&wy);
    zoom=Limit(zoom*d,0.02,50);
    W2S(wx,wy,&sx,&sy);
    task->win_scroll_x=ipx-sx-task->win_pixel_left;
    task->win_scroll_y=ipy-sy-task->win_pixel_top;
    Sleep(10);
  }
}
Пример #7
0
double
Math::LambertW(
    const double arg
    )
{
    if(0.0 == arg) return 0.0;

    const double eps = 4.0e-16;
    const double em1 = 0.3678794411714423215955237701614608;

    assert(arg>=-em1);

    double p,e,t,w;

    if(arg < (-em1+1e-4))
    {
        // series near -em1 in sqrt(q)
        double q = arg+em1;
        double r=Sqrt(q);
        double q2=q*q;
        double q3=q2*q;

        return
            -1.0
            +2.331643981597124203363536062168*r
            -1.812187885639363490240191647568*q
            +1.936631114492359755363277457668*r*q
            -2.353551201881614516821543561516*q2
            +3.066858901050631912893148922704*r*q2
            -4.175335600258177138854984177460*q3
            +5.858023729874774148815053846119*r*q3
            -8.401032217523977370984161688514*q3*q;  // error approx 1e-16
    }

    /* initial approx for iteration... */
    if(arg < 1.0)
    {
        /* series near 0 */
        p = Sqrt(2.0 * (2.7182818284590452353602874713526625*arg + 1.0));
        w = -1.0 + p * (1.0 + p *
            (-0.333333333333333333333 + p * 0.152777777777777777777777)
            );
    }
    else w=Ln(arg); /* asymptotic */

    if(arg > 3.0) w -= Ln(w); /* useful? */

    for (unsigned int i=0; i<10; ++i)
    {
        /* Halley iteration */
        e = Exp(w);
        t = w * e - arg;
        p = w + 1.0;
        t /= e * p - 0.5 * (p + 1.0) * t / p;
        w -= t;
        if (Abs(t) < eps * (1.0 + Abs(w))) return w; /* rel-abs error */
    }

    assert(false && "Lambert W - No convergence.");
    return 0.0f;

} // Math::LambertW
Пример #8
0
		Double Log(Double base, Double x) {
			return (Ln(x) / Ln(base));
		}
Пример #9
0
		Float Log(Float base, Float x) {
			return (Ln(x) / Ln(base));
		}