Пример #1
0
static int m_linesearch(
		motion_arg const *arg, unsigned repeat, window *win, point_t *to,
		list_t *sfn(motion_arg const *, list_t *, int *, const void *),
		const void *ctx)
{
	list_t *l = window_current_line(win, false); /* fine - repeat handled */
	int n = 0;

	*to = *win->ui_pos;

	if(!l)
		goto limit;

	for(repeat = DEFAULT_REPEAT(repeat);
			repeat > 0;
			repeat--)
	{
		l = sfn(arg, l, &n, ctx);
		if(!l)
			goto limit;
	}

	to->y += n;

	return MOTION_SUCCESS;
limit:
	to->y = arg->dir > 0 ? buffer_nlines(win->buf) : 0;
	return MOTION_SUCCESS;
}
Пример #2
0
LL calc(int n)
{
	LL ret = 0;
	for(int i = 1, j; i <= n; i = j + 1)
	{
		j = n / (n / i);
		ret += (j - i + 1) * (n / i - sfn(n / i));
	}
	return ret;
}
Пример #3
0
int main()
{
  {
    constexpr   x_subframe_number xsfn =  make_x_subframe_number(frame_number{5}, subframe_number{3});
    static_assert(xsfn.count()  == 53, "");

  }
  {
  subframes num_of_sfs{4};
  num_of_sfs++;
  frames num_of_fs{2};
  num_of_fs++;
  auto x = num_of_fs + num_of_sfs;
  std::cout << "sfn = " << x.count() << "\n";
  {
      x_subframe_number xsfn {x};
      std::cout << "xsfn = " << xsfn << "\n";
      slot_number slotn =  to_slot_number(xsfn);
      std::cout << "slotn = " << slotn << "\n";
      subframe_number sfn =  to_subframe_number(xsfn);
      std::cout << "sfn = " << sfn << "\n";
      frame_number fn =  to_frame_number(xsfn);
      std::cout << "fn = " << fn << "\n";
      x_frame_number xfn =  to_x_frame_number(xsfn);
      std::cout << "xfn = " << xfn << "\n";

      {
          x_subframe_number xsfn2 { frames(fn) + subframes(sfn) };
          std::cout << "xsfn2 = " << xsfn2 << "\n";
      }
      {
          auto xsfn2 = make_x_subframe_number( fn, sfn );
          std::cout << "xsfn2 = " << xsfn2 << "\n";
      }
      {
          x_subframe_number xsfn2 = make_x_subframe_number( fn, sfn );
          std::cout << "xsfn2 = " << xsfn2 << "\n";
      }
      {
          auto xsfn2 = fn.to_duration() + sfn.to_duration();
          std::cout << "xsfn2 = " << xsfn2.count() << "\n";
      }

  }

  subframe_number sfn (num_of_sfs) ;
  frame_number fn (num_of_fs) ;
  bi_frame_number bfn (num_of_fs) ;
  bi_subframe_number bsfn = make_bi_subframe_number(bfn,sfn) ;
  std::cout << "bsfn = " << bsfn << "\n";

  std::cout << "==================\n";

  x_subframe_number  x2 = make_x_subframe_number( fn, sfn );
  std::cout << "xsfn2= " << x2 << "\n";
  bi_subframe_number bsfn2 = stdex::chrono::modulo_cast<bi_subframe_number, h_frames>(x2) ;
      std::cout << "bsfn2= " << bsfn2 << "\n";

  bi_frame_number bfn2 = stdex::chrono::modulo_cast<bi_frame_number, h_frames>(x2) ;
  std::cout << "bfn2= " << bfn2 << "\n";

  x_subframe_number x3 = stdex::chrono::modulo_cast<x_subframe_number, h_frames>(bfn2) ;
  std::cout << "x3= " << x3 << "\n";

  x_subframe_number x4 = stdex::chrono::modulo_cast<x_subframe_number, h_frames>(bsfn2) ;
  std::cout << "x4= " << x4 << "\n";
  }
  {
      frame_number fn {1};
      subframe_number sfn {2};
      x_subframe_tuple xsfn = fn/sfn;
      BOOST_TEST(xsfn.frame().count()==1);
      BOOST_TEST(xsfn.subframe().count()==2);
      BOOST_TEST(xsfn.x_subframe().count()==12);

      BOOST_TEST(to_frame_number(xsfn).count()==1);
      BOOST_TEST(to_subframe_number(xsfn).count()==2);
      BOOST_TEST(to_x_subframe_number(xsfn).count()==12);

      xsfn += frames(3);
      BOOST_TEST(xsfn.x_subframe().count()==42);
      BOOST_TEST(xsfn.frame().count()==4);

      xsfn += subframes(23);
      std::cout << "xsfn.x_subframe()= " << xsfn.x_subframe() << "\n";
      BOOST_TEST(xsfn.x_subframe().count()==65);

      ++xsfn;
      BOOST_TEST(xsfn.x_subframe().count()==66);

      --xsfn;
      BOOST_TEST(xsfn.x_subframe().count()==65);

      auto x1 = xsfn++;
      BOOST_TEST(x1.x_subframe().count()==65);
      BOOST_TEST(xsfn.x_subframe().count()==66);

      auto x2 = xsfn--;
      BOOST_TEST(x2.x_subframe().count()==66);
      BOOST_TEST(xsfn.x_subframe().count()==65);

  }
  {
      frame_number fn {1};
      subframe_number sfn {2};
      x_subframe_tuple xsfn = fn/sfn;
      auto x = xsfn - xsfn;
      BOOST_TEST(x.count()==0);

  }

  return ::boost::report_errors();
}
Пример #4
0
/* Copyright 1990-2006, Jsoftware Inc.  All rights reserved.               */
/* Licensed use only. Any other use is in violation of copyright.          */
/*                                                                         */
/* Debug: Function Call Information                                        */

#include "j.h"
#include "d.h"


static F1(jtdfrep){RZ(w); R NOUN&AT(w)?w:lrep(w);}

static SYMWALK(jtdloc,A,BOX,5,2,1,{RZ(*zv++=sfn(0,d->name)); RZ(*zv++=dfrep(d->val));})

static B jtdrow(J jt,DC si,DC s0,A*zv){A fs,q,*qv,y;C c;
 fs=si->dcf;
 GATV(q,BOX,si->dcx&&si->dcy?2:1,1,0); qv=AAV(q); 
 if(si->dcx)*qv++=dfrep(si->dcx); 
 if(si->dcy)*qv++=dfrep(si->dcy);
 *zv++=sfn(0,si->dca);                     /* 0 name                     */
 *zv++=sc(si->dcj);                        /* 1 error number             */
 *zv++=sc(lnumsi(si));                     /* 2 line number              */
 *zv++=num[ADV&AT(fs)?1:CONJ&AT(fs)?2:3];  /* 3 name class               */
 *zv++=lrep(fs);                           /* 4 linear rep.              */
 *zv++=0;                                  /* 5 script name              */
 *zv++=q;                                  /* 6 argument list            */
 if(si->dcloc){RZ(y=dloc(si->dcloc)); RZ(*zv++=grade2(y,ope(irs1(y,0L,1L,jthead))));}
 else         RZ(*zv++=iota(v2(0L,2L)));   /* 7 locals                   */
 c=si->dcsusp||s0&&DCPARSE==s0->dctype&&s0->dcsusp?'*':' ';
 RZ(*zv++=scc(c));                         /* 8 * if begins a suspension */
 R 1;
}    /* construct one row of function call matrix */