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; }
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; }
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(); }
/* 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 */