void first() { n1(xnxt,ynxt,h,w1); fs(xnxt,ynxt); xnxt+=s/2; ppp(xnxt,ynxt,h,wp); rrr(xnxt,ynxt,h,wr); eee(xnxt,ynxt,h,we); sss(xnxt,ynxt,h,ws); sss(xnxt,ynxt,h,ws); xnxt+=s/2; www(xnxt,ynxt,3*h/4,3*ww/4); xnxt+=s/2; ttt(xnxt,ynxt,h,wt); ooo(xnxt,ynxt,h,wo); xnxt+=s/2; mmm(xnxt,ynxt,h,wm); ooo(xnxt,ynxt,h,wo); vvv(xnxt,ynxt,h,wv); eee(xnxt,ynxt,h,we); xnxt+=s/2; ttt(xnxt,ynxt,h,wt); hhh(xnxt,ynxt,h,wh); eee(xnxt,ynxt,h,we); xnxt+=s/2; bbb(xnxt,ynxt,h,wb); ooo(xnxt,ynxt,h,wo); www(xnxt,ynxt,h,ww); xnxt+=s/2; uuu(xnxt,ynxt,h,wu); ppp(xnxt,ynxt,h,wp); }
second() { n2(xnxt,ynxt,h,w2); fs(xnxt,ynxt); xnxt+=s/2; ppp(xnxt,ynxt,h,wp); rrr(xnxt,ynxt,h,wr); eee(xnxt,ynxt,h,we); sss(xnxt,ynxt,h,ws); sss(xnxt,ynxt,h,ws); xnxt+=s/2; sss(xnxt,ynxt,3*h/4,3*ws/4); xnxt+=s/2; ttt(xnxt,ynxt,h,wt); ooo(xnxt,ynxt,h,wo); xnxt+=s/2; mmm(xnxt,ynxt,h,wm); ooo(xnxt,ynxt,h,wo); vvv(xnxt,ynxt,h,wv); eee(xnxt,ynxt,h,we); xnxt+=s/2; ttt(xnxt,ynxt,h,wt); hhh(xnxt,ynxt,h,wh); eee(xnxt,ynxt,h,we); xnxt+=s/2; bbb(xnxt,ynxt,h,wb); ooo(xnxt,ynxt,h,wo); www(xnxt,ynxt,h,ww); xnxt+=s/2; ddd(xnxt,ynxt,h,wd); ooo(xnxt,ynxt,h,wo); www(xnxt,ynxt,h,ww); nnn(xnxt,ynxt,h,wn); }
void project() { ppp(xnxt,ynxt,h,wp); rrr(xnxt,ynxt,h,wr); ooo(xnxt,ynxt,h,wo); jjj(xnxt,ynxt,h,wj); eee(xnxt,ynxt,h,we); ccc(xnxt,ynxt,h,wc); ttt(xnxt,ynxt,h,wt); }
void madam() { mmm(xnxt,ynxt,h,wm); rrr(xnxt,ynxt,h,wr); sss(xnxt,ynxt,h,ws); fs(xnxt,ynxt); ppp(xnxt,ynxt,h,wp); uuu(xnxt,ynxt,h,wu); sss(xnxt,ynxt,h,ws); hhh(xnxt,ynxt,h,wh); ppp(xnxt,ynxt,h,wp); aaa(xnxt,ynxt,h,wa); lll(xnxt,ynxt,h,wl); aaa(xnxt,ynxt,h,wa); ttt(xnxt,ynxt,h,wt); hhh(xnxt,ynxt,h,wh); aaa(xnxt,ynxt,h,wa); }
void graphics() { ggg(xnxt,ynxt,h,wg); rrr(xnxt,ynxt,h,wr); aaa(xnxt,ynxt,h,wa); ppp(xnxt,ynxt,h,wp); hhh(xnxt,ynxt,h,wh); iii(xnxt,ynxt,h,wi); ccc(xnxt,ynxt,h,wc); sss(xnxt,ynxt,h,ws); }
void computer() { ccc(xnxt,ynxt,h,wc); ooo(xnxt,ynxt,h,wo); mmm(xnxt,ynxt,h,wm); ppp(xnxt,ynxt,h,wp); uuu(xnxt,ynxt,h,wu); ttt(xnxt,ynxt,h,wt); eee(xnxt,ynxt,h,we); rrr(xnxt,ynxt,h,wr); }
static void ServiceBoard(void) { BYTE input_value; input_value = PORTF ; // invert inputs -- use active LOW input_value = (input_value & 0x15) ^ 0x15; TRISB_RB6 = 0; //if ((input_value & 0x01)==0 && (input_value & 0x04)==0) // //if (input_value==0) // LATB6 = 0; //else // LATB6 = 1; ppp(input_value); }
void how() { hhh(xnxt,ynxt,h,wh); ooo(xnxt,ynxt,h,wo); www(xnxt,ynxt,h,ww); xnxt+=s/2; ttt(xnxt,ynxt,h,wt); ooo(xnxt,ynxt,h,wo); xnxt+=s/2; ppp(xnxt,ynxt,h,wp); lll(xnxt,ynxt,h,wl); aaa(xnxt,ynxt,h,wa); yyy(xnxt,ynxt,h,wy); }
int main(int argc, char *argv[]) { /*Vector2D p1(50,50); Vector2D p2(300,50); Vector2D p3(300,300); Vector2D p4(50,300); Vector2D p5(0,0); Vector2D p6(50,50); Vector2D p7(100,0); QVector<Vector2D> list; list << p1<<p2<<p3<<p4; QVector<Vector2D> list2; list2 <<p5<<p6<<p7; Convexe p(list); Convexe pp(list2); //std::cout<<p.getLesPoints().size()<<std::endl; //Convexe c =p+pp; Convexe c=Convexe::interpolate(p,pp,0.2);*/ std::ofstream out; QVector<Vector2D> list3; for(int i=0;i<10000;++i){ //double ra=MathUtils::random(0,2*3.14159265); //Vector2D temp =Vector2D(150+140*cos(ra),150+140*sin(ra)); Vector2D temp(MathUtils::random(10,290),MathUtils::random(10,290)); // if(temp.distanceToPoint2D(Vector2D(150,150))<=140){ list3 << temp; //} //else // --i; } QTime time; time.start(); Convexe ppp(list3); std::cout<<time.elapsed()<<std::endl; out.open("C:/Users/etu/Desktop/test.svg"); out<<ppp.toSvg(); out.close(); }
void AppSetup::onResizeWindow(const Int2& newSize) { m_inf.windowSize = newSize; Float2 newSizeF = Float2((float)newSize.width(), (float)newSize.height()); Float2 virtualSizeF = Float2((float)m_inf.virtualSize.width(), (float)m_inf.virtualSize.height()); if (m_inf.automaticFitToWindowSize && (newSize.width() != m_inf.virtualSize.width() || newSize.height() != m_inf.virtualSize.height())) { Float2 ppp(-1.f,-1.f); Int2 virtualPos(-1,-1); float ratioW = (float)newSize.width() / (float)m_inf.virtualSize.width(); float ratioH = (float)newSize.height() / (float)m_inf.virtualSize.height(); if (m_inf.virtualSizeAllowRatioDeformation) { ppp = Float2(ratioW,ratioH); virtualPos = Int2(0,0); } else if (newSizeF.width()/newSizeF.height() > virtualSizeF.width() / virtualSizeF.height()) { ppp = Float2(ratioH,ratioH); virtualPos = Int2((int)((newSizeF.width()-virtualSizeF.width()*ratioH)/2.f), 0); } else { ppp = Float2(ratioW,ratioW); virtualPos = Int2(0, (int)((newSizeF.height()-virtualSizeF.height()*ratioW)/2.f)); } this->setPixelPerPointLowLevel(ppp, virtualPos); } else { this->setPixelPerPointLowLevel(Float2(1.f,1.f), Int2(0,0)); #if defined(USES_WINDOWS_OPENGL) || defined(USES_LINUX) m_openGL->setRealWindowSize(newSize); m_openGL->set2DMode(); #else // do nothing here #endif } m_isUsingVirtualSize = (this->getPixelPerPoint() != Float2(1.f, 1.f) || this->getVirtualTopLeftCornerInWindow() != Int2(0, 0)); }
int main(int argc, char **argv) { SplayTree T; int i; int size = 100; srand(time(NULL)); for (i = size; i >= 1; i--) { T=Insert(rand()%size, T); } prinx(T); i = 1; while (i <= size) { T = ppp(i, T); i++; } printf("\n\nThe total number of rotation is %d.\n", sum); }
u8 read_frr_a(void) { u8 cmd[2]; u8 rx[3]; int j=50; cmd[0] = FRR_A_READ; cmd[1] = 0x00; // mutex_lock(&mutex_spi); cs_low(); spidev_global.buffer = &cmd; // spidev_sync_write(&spidev_global, 1); // cmd = 0x00; spidev_sync_transfer(&spidev_global, &cmd, rx, 2); cs_high(); // mutex_unlock(&mutex_spi); // printk(KERN_ALERT "FRR READ: %x, %x\n", rx[0], rx[1]); // for(j=50; j>=0 && rx[1] != 0x22 && rx[1] != 0x20 // && rx[1] != 0x10 && rx[1] != 0x11 // /*(*value == 0 || *value == 0xff)*/; j--) if(rx[1] != 0 && rx[1] != 0xff) { return rx[1]; } do { get_ph_status(rx); // printk(KERN_ALERT "read frra retry!\n"); // cs_low(); // spidev_sync_transfer(&spidev_global, &cmd, rx, 2); // cs_high(); j--; } while( j>=0 && rx[2] == 0 || rx[2] == 0xff); if (j<=5){ printk(KERN_ALERT "get_ph_status ERROR!!!\n"); ppp(rx, 3); } return rx[2]; }
GUI::GUI(QWidget *parent) : QWidget(parent) , t(new QTimer(this)) { QPalette ppp(this->palette()); ppp.setColor(QPalette::Background, Qt::white); this->setPalette(ppp); //Заранее настроим анимацию на 25 кадров в секунду t->setInterval(40); //и определим поведение по таймеру connect(t, &QTimer::timeout, [this](){ int i(0); //Найдём несовпадающую плитку while(i < my.size() && my[i].pos() == dest[i].pos()) { ++i; } //Если не нашлась - останавливаем анимацию if (i == my.size()) { this->t->stop(); return; } //иначе сместим её в направлении конечного положения while(i < my.size()) { if (my[i].pos() != dest[i].pos()) { Point& a(my[i].rpos()); Point& b(dest[i].rpos()); if ((a - b).manhattanLength() > 0.01) { a -= (a - b) / 2.0; } else { a = b; } } ++i; } //и пререрисуем this->repaint(); }); }
osgToy::TetraStrip::TetraStrip() { osg::Vec3Array* vAry = dynamic_cast<osg::Vec3Array*>( getVertexArray() ); osg::Vec3Array* nAry = dynamic_cast<osg::Vec3Array*>( getNormalArray() ); setNormalBinding( osg::Geometry::BIND_PER_VERTEX ); osg::Vec4Array* cAry = dynamic_cast<osg::Vec4Array*>( getColorArray() ); setColorBinding( osg::Geometry::BIND_PER_VERTEX ); osg::Vec3 ppp( 1, 1, 1); osg::Vec4 white(1,1,1,1); osg::Vec3 nnp( -1, -1, 1); osg::Vec4 blue(0,0,1,1); osg::Vec3 pnn( 1, -1, -1); osg::Vec4 red(1,0,0,1); osg::Vec3 npn( -1, 1, -1); osg::Vec4 green(0,1,0,1); osg::Vec3 ppn( 1, 1, -1); osg::Vec4 yellow(1,1,0,1); osg::Vec3 pnp( 1, -1, 1); osg::Vec4 magenta(1,0,1,1); osg::Vec3 nnn( -1, -1, -1); osg::Vec4 black(0,0,0,1); osg::Vec3 npp( -1, 1, 1); osg::Vec4 cyan(0,1,1,1); #if 1 vAry->push_back(ppp); nAry->push_back(ppp); cAry->push_back(white); vAry->push_back(nnp); nAry->push_back(nnp); cAry->push_back(blue); vAry->push_back(pnn); nAry->push_back(pnn); cAry->push_back(red); vAry->push_back(npn); nAry->push_back(npn); cAry->push_back(green); vAry->push_back(ppp); nAry->push_back(ppp); cAry->push_back(white); vAry->push_back(nnp); nAry->push_back(nnp); cAry->push_back(blue); #else vAry->push_back(ppn); nAry->push_back(ppn); cAry->push_back(yellow); vAry->push_back(pnp); nAry->push_back(pnp); cAry->push_back(magenta); vAry->push_back(nnn); nAry->push_back(nnn); cAry->push_back(black); vAry->push_back(npp); nAry->push_back(npp); cAry->push_back(cyan); vAry->push_back(ppn); nAry->push_back(ppn); cAry->push_back(yellow); vAry->push_back(pnp); nAry->push_back(pnp); cAry->push_back(magenta); #endif addPrimitiveSet( new osg::DrawArrays( GL_TRIANGLE_STRIP, 0, vAry->size() ) ); }
third() { n3(xnxt,ynxt,h,w3); fs(xnxt,ynxt); xnxt+=s/2; ppp(xnxt,ynxt,h,wp); rrr(xnxt,ynxt,h,wr); eee(xnxt,ynxt,h,we); sss(xnxt,ynxt,h,ws); sss(xnxt,ynxt,h,ws); xnxt+=s/2; eee(xnxt,ynxt,3*h/4,3*we/4); nnn(xnxt,ynxt,3*h/4,3*wn/4); ttt(xnxt,ynxt,3*h/4,3*wt/4); eee(xnxt,ynxt,3*h/4,3*we/4); rrr(xnxt,ynxt,3*h/4,3*wr/4); xnxt+=s/2; ttt(xnxt,ynxt,h,wt); ooo(xnxt,ynxt,h,wo); xnxt+=s/2; sss(xnxt,ynxt,h,ws); hhh(xnxt,ynxt,h,wh); ooo(xnxt,ynxt,h,wo); ooo(xnxt,ynxt,h,wo); ttt(xnxt,ynxt,h,wt); xnxt+=s/2; ttt(xnxt,ynxt,h,wt); hhh(xnxt,ynxt,h,wh); eee(xnxt,ynxt,h,we); xnxt+=s/2; aaa(xnxt,ynxt,h,wa); rrr(xnxt,ynxt,h,wr); rrr(xnxt,ynxt,h,wr); ooo(xnxt,ynxt,h,wo); www(xnxt,ynxt,h,ww); }
int adb_commandline(int argc, char **argv) { char buf[4096]; int no_daemon = 0; int is_daemon = 0; int persist = 0; int r; int quote; transport_type ttype = kTransportAny; char* serial = NULL; /* If defined, this should be an absolute path to * the directory containing all of the various system images * for a particular product. If not defined, and the adb * command requires this information, then the user must * specify the path using "-p". */ gProductOutPath = getenv("ANDROID_PRODUCT_OUT"); if (gProductOutPath == NULL || gProductOutPath[0] == '\0') { gProductOutPath = NULL; } // TODO: also try TARGET_PRODUCT/TARGET_DEVICE as a hint serial = getenv("ANDROID_SERIAL"); /* modifiers and flags */ while(argc > 0) { if(!strcmp(argv[0],"nodaemon")) { no_daemon = 1; } else if (!strcmp(argv[0], "fork-server")) { /* this is a special flag used only when the ADB client launches the ADB Server */ is_daemon = 1; } else if(!strcmp(argv[0],"persist")) { persist = 1; } else if(!strncmp(argv[0], "-p", 2)) { const char *product = NULL; if (argv[0][2] == '\0') { if (argc < 2) return usage(); product = argv[1]; argc--; argv++; } else { product = argv[1] + 2; } gProductOutPath = find_product_out_path(product); if (gProductOutPath == NULL) { fprintf(stderr, "adb: could not resolve \"-p %s\"\n", product); return usage(); } } else if (argv[0][0]=='-' && argv[0][1]=='s') { if (isdigit(argv[0][2])) { serial = argv[0] + 2; } else { if(argc < 2) return usage(); serial = argv[1]; argc--; argv++; } } else if (!strcmp(argv[0],"-d")) { ttype = kTransportUsb; } else if (!strcmp(argv[0],"-e")) { ttype = kTransportLocal; } else { /* out of recognized modifiers and flags */ break; } argc--; argv++; } adb_set_transport(ttype, serial); if ((argc > 0) && (!strcmp(argv[0],"server"))) { if (no_daemon || is_daemon) { r = adb_main(is_daemon); } else { r = launch_server(); } if(r) { fprintf(stderr,"* could not start server *\n"); } return r; } top: if(argc == 0) { return usage(); } /* adb_connect() commands */ if(!strcmp(argv[0], "devices")) { char *tmp; snprintf(buf, sizeof buf, "host:%s", argv[0]); tmp = adb_query(buf); if(tmp) { printf("List of devices attached \n"); printf("%s\n", tmp); return 0; } else { return 1; } } if(!strcmp(argv[0], "connect") || !strcmp(argv[0], "disconnect")) { char *tmp; if (argc != 2) { fprintf(stderr, "Usage: adb %s <host>:<port>\n", argv[0]); return 1; } snprintf(buf, sizeof buf, "host:%s:%s", argv[0], argv[1]); tmp = adb_query(buf); if(tmp) { printf("%s\n", tmp); return 0; } else { return 1; } } if (!strcmp(argv[0], "emu")) { return adb_send_emulator_command(argc, argv); } if(!strcmp(argv[0], "shell")) { int r; int fd; if(argc < 2) { return interactive_shell(); } snprintf(buf, sizeof buf, "shell:%s", argv[1]); argc -= 2; argv += 2; while(argc-- > 0) { strcat(buf, " "); /* quote empty strings and strings with spaces */ quote = (**argv == 0 || strchr(*argv, ' ')); if (quote) strcat(buf, "\""); strcat(buf, *argv++); if (quote) strcat(buf, "\""); } for(;;) { fd = adb_connect(buf); if(fd >= 0) { read_and_dump(fd); adb_close(fd); r = 0; } else { fprintf(stderr,"error: %s\n", adb_error()); r = -1; } if(persist) { fprintf(stderr,"\n- waiting for device -\n"); adb_sleep_ms(1000); do_cmd(ttype, serial, "wait-for-device", 0); } else { return r; } } } if(!strcmp(argv[0], "kill-server")) { int fd; fd = _adb_connect("host:kill"); if(fd == -1) { fprintf(stderr,"* server not running *\n"); return 1; } return 0; } if(!strcmp(argv[0], "remount") || !strcmp(argv[0], "reboot") || !strcmp(argv[0], "reboot-bootloader") || !strcmp(argv[0], "tcpip") || !strcmp(argv[0], "usb") || !strcmp(argv[0], "root")) { char command[100]; if (!strcmp(argv[0], "reboot-bootloader")) snprintf(command, sizeof(command), "reboot:bootloader"); else if (argc > 1) snprintf(command, sizeof(command), "%s:%s", argv[0], argv[1]); else snprintf(command, sizeof(command), "%s:", argv[0]); int fd = adb_connect(command); if(fd >= 0) { read_and_dump(fd); adb_close(fd); return 0; } fprintf(stderr,"error: %s\n", adb_error()); return 1; } if(!strcmp(argv[0], "bugreport")) { if (argc != 1) return usage(); do_cmd(ttype, serial, "shell", "bugreport", 0); return 0; } /* adb_command() wrapper commands */ if(!strncmp(argv[0], "wait-for-", strlen("wait-for-"))) { char* service = argv[0]; if (!strncmp(service, "wait-for-device", strlen("wait-for-device"))) { if (ttype == kTransportUsb) { service = "wait-for-usb"; } else if (ttype == kTransportLocal) { service = "wait-for-local"; } else { service = "wait-for-any"; } } format_host_command(buf, sizeof buf, service, ttype, serial); if (adb_command(buf)) { D("failure: %s *\n",adb_error()); fprintf(stderr,"error: %s\n", adb_error()); return 1; } /* Allow a command to be run after wait-for-device, * e.g. 'adb wait-for-device shell'. */ if(argc > 1) { argc--; argv++; goto top; } return 0; } if(!strcmp(argv[0], "forward")) { if(argc != 3) return usage(); if (serial) { snprintf(buf, sizeof buf, "host-serial:%s:forward:%s;%s",serial, argv[1], argv[2]); } else if (ttype == kTransportUsb) { snprintf(buf, sizeof buf, "host-usb:forward:%s;%s", argv[1], argv[2]); } else if (ttype == kTransportLocal) { snprintf(buf, sizeof buf, "host-local:forward:%s;%s", argv[1], argv[2]); } else { snprintf(buf, sizeof buf, "host:forward:%s;%s", argv[1], argv[2]); } if(adb_command(buf)) { fprintf(stderr,"error: %s\n", adb_error()); return 1; } return 0; } /* do_sync_*() commands */ if(!strcmp(argv[0], "ls")) { if(argc != 2) return usage(); return do_sync_ls(argv[1]); } if(!strcmp(argv[0], "push")) { if(argc != 3) return usage(); return do_sync_push(argv[1], argv[2], 0 /* no verify APK */); } if(!strcmp(argv[0], "pull")) { if (argc == 2) { return do_sync_pull(argv[1], "."); } else if (argc == 3) { return do_sync_pull(argv[1], argv[2]); } else { return usage(); } } if(!strcmp(argv[0], "install")) { if (argc < 2) return usage(); return install_app(ttype, serial, argc, argv); } if(!strcmp(argv[0], "uninstall")) { if (argc < 2) return usage(); return uninstall_app(ttype, serial, argc, argv); } if(!strcmp(argv[0], "sync")) { char *srcarg, *android_srcpath, *data_srcpath; int listonly = 0; int ret; if(argc < 2) { /* No local path was specified. */ srcarg = NULL; } else if (argc >= 2 && strcmp(argv[1], "-l") == 0) { listonly = 1; if (argc == 3) { srcarg = argv[2]; } else { srcarg = NULL; } } else if(argc == 2) { /* A local path or "android"/"data" arg was specified. */ srcarg = argv[1]; } else { return usage(); } ret = find_sync_dirs(srcarg, &android_srcpath, &data_srcpath); if(ret != 0) return usage(); if(android_srcpath != NULL) ret = do_sync_sync(android_srcpath, "/system", listonly); if(ret == 0 && data_srcpath != NULL) ret = do_sync_sync(data_srcpath, "/data", listonly); free(android_srcpath); free(data_srcpath); return ret; } /* passthrough commands */ if(!strcmp(argv[0],"get-state") || !strcmp(argv[0],"get-serialno")) { char *tmp; format_host_command(buf, sizeof buf, argv[0], ttype, serial); tmp = adb_query(buf); if(tmp) { printf("%s\n", tmp); return 0; } else { return 1; } } /* other commands */ if(!strcmp(argv[0],"status-window")) { status_window(ttype, serial); return 0; } if(!strcmp(argv[0],"logcat") || !strcmp(argv[0],"lolcat")) { return logcat(ttype, serial, argc, argv); } if(!strcmp(argv[0],"ppp")) { return ppp(argc, argv); } if (!strcmp(argv[0], "start-server")) { return adb_connect("host:start-server"); } if (!strcmp(argv[0], "jdwp")) { int fd = adb_connect("jdwp"); if (fd >= 0) { read_and_dump(fd); adb_close(fd); return 0; } else { fprintf(stderr, "error: %s\n", adb_error()); return -1; } } /* "adb /?" is a common idiom under Windows */ if(!strcmp(argv[0], "help") || !strcmp(argv[0], "/?")) { help(); return 0; } if(!strcmp(argv[0], "version")) { version(stdout); return 0; } usage(); return 1; }
/********************************************************************* * 矩阵的奇异值分解,参见《c 常用算法程序集》徐世良P169 * 参数说明: * a m*n的实矩阵,返回时其对角线给出奇异值(非递增顺序),其余元素为0 * m,n 矩阵A的行数和列数 * u m*m的矩阵,存放左奇异向量 * v n*n的矩阵,存放右奇异向量 * eps 双精度实型变量,给定精度要求 * ka 整形变量,其值为max(m,n)+1 * 返回值:如果返回标志小于0,则说明出现了迭代MAX_ITERA次还未求得某个 * 奇异值的情况,此时矩阵A的分解式为UAV,如果返回标志大于0,则说明 * 程序正常运行 ********************************************************************/ int dluav(float *a,int m,int n,float eps,int ka) { int i,j,k,l,it,ll,kk,ix,iy,mm,nn,iz,ml,ks; float d,dd,t,sm,sml,eml,sk,ek,b,c,shh,fg[2],cs[2]; float *s,*e,*w; float *u,*v; s=(float*)malloc(ka*sizeof(float)); e=(float*)malloc(ka*sizeof(float)); w=(float*)malloc(ka*sizeof(float)); u=(float *)malloc(m*m*sizeof(float)); v=(float *)malloc(n*n*sizeof(float)); for(i=1;i<=m;i++) { ix=(i-1)*m+i-1; u[ix]=0; } for(i=1;i<=n;i++) { iy=(i-1)*n+i-1; v[iy]=0; } it=MAX_ITERA;k=n; if(m-1<n) k=m-1; l=m; if(n-2<m) l=n-2; if(l<0) l=0; ll=k; if(l>k) ll=l; if(ll>=1) { for(kk=1;kk<=ll;kk++) { if(kk<=k) { d=0.0; for(i=kk;i<=m;i++) { ix=(i-1)*n+kk-1;d=d+a[ix]*a[ix]; } s[kk-1]=sqrt(d); //if(s[kk-1]!=0.0) if(fabs(s[kk-1])>MIN_DOUBLE) { ix=(kk-1)*n+kk-1; //if(a[ix]!=0.0) if(fabs(a[ix])>MIN_DOUBLE) { s[kk-1]=fabs(s[kk-1]); if(a[ix]<0.0) s[kk-1]=-s[kk-1]; } for(i=kk;i<=m;i++) { iy=(i-1)*n+kk-1; a[iy]=a[iy]/s[kk-1]; } a[ix]=1.0+a[ix]; } s[kk-1]=-s[kk-1]; } if(n>=kk+1) { for(j=kk+1;j<=n;j++) { //if((kk<=k)&&(s[kk-1]!=0.0)) if((kk<=k)&&(fabs(s[kk-1])>MIN_DOUBLE)) { d=0.0; for(i=kk;i<=m;i++) { ix=(i-1)*n+kk-1; iy=(i-1)*n+j-1; d=d+a[ix]*a[iy]; } d=-d/a[(kk-1)*n+kk-1]; for(i=kk;i<=m;i++) { ix=(i-1)*n+j-1; iy=(i-1)*n+kk-1; a[ix]=a[ix]+d*a[iy]; } } e[j-1]=a[(kk-1)*n+j-1]; } } if(kk<=k) { for(i=kk;i<=m;i++) { ix=(i-1)*m+kk-1;iy=(i-1)*n+kk-1; u[ix]=a[iy]; } } if(kk<=l) { d=0.0; for(i=kk+1;i<=n;i++) d=d+e[i-1]*e[i-1]; e[kk-1]=sqrt(d); //if(e[kk-1]!=0.0) if(fabs(e[kk-1])>MIN_DOUBLE) { //if(e[kk]!=0.0) if(fabs(e[kk])>MIN_DOUBLE) { e[kk-1]=fabs(e[kk-1]); if(e[kk]<0.0) e[kk-1]=-e[kk-1]; } for(i=kk+1;i<=n;i++) e[i-1]=e[i-1]/e[kk-1]; e[kk]=1.0+e[kk]; } e[kk-1]=-e[kk-1]; //if((kk+1<=m)&&(e[kk-1]!=0.0)) if((kk+1<=m)&&(fabs(e[kk-1])>MIN_DOUBLE)) { for(i=kk+1;i<=m;i++) w[i-1]=0.0; for(j=kk+1;j<=n;j++) for(i=kk+1;i<=m;i++) w[i-1]=w[i-1]+e[j-1]*a[(i-1)*n+j-1]; for(j=kk+1;j<=n;j++) for(i=kk+1;i<=m;i++) { ix=(i-1)*n+j-1; a[ix]=a[ix]-w[i-1]*e[j-1]/e[kk]; } } for(i=kk+1;i<=n;i++) v[(i-1)*n+kk-1]=e[i-1]; } } } mm=n; if(m+1<n) mm=m+1; if(k<n) s[k]=a[k*n+k]; if(m<mm) s[mm-1]=0.0; if(l+1<mm) e[l]=a[l*n+mm-1]; e[mm-1]=0.0; nn=m; if(m>n) nn=n; if(nn>=k+1) { for(j=k+1;j<=nn;j++) { for(i=1;i<=m;i++) u[(i-1)*m+j-1]=0.0; u[(j-1)*m+j-1]=1.0; } } if(k>=1)///////////////////////////////// { for(ll=1;ll<=k;ll++) { kk=k-ll+1;iz=(kk-1)*m+kk-1; //if(s[kk-1]!=0.0) if(fabs(s[kk-1])>MIN_DOUBLE) { if(nn>=kk+1) for(j=kk+1;j<=nn;j++) { d=0.0; for(i=kk;i<=m;i++) { ix=(i-1)*m+kk-1; iy=(i-1)*m+j-1; d=d+u[ix]*u[iy]/u[iz]; } d=-d; for(i=kk;i<=m;i++) { ix=(i-1)*m+j-1; iy=(i-1)*m+kk-1; u[ix]=u[ix]+d*u[iy]; } } for(i=kk;i<=m;i++) { ix=(i-1)*m+kk-1; u[ix]=-u[ix]; } u[iz]=1.0+u[iz]; if(kk-1>=1)////////////////////////////////////// for(i=1;i<=kk-1;i++) u[(i-1)*m+kk-1]=0.0; } else { for(i=1;i<=m;i++) u[(i-1)*m+kk-1]=0.0; u[(kk-1)*m+kk-1]=1.0; } } } for(ll=1;ll<=n;ll++) { kk=n-ll+1;iz=kk*n+kk-1; //if((kk<=l)&&(e[kk-1]!=0.0))///////////////////////////// if((kk<=l)&&(fabs(e[kk-1])>MIN_DOUBLE)) { for(j=kk+1;j<=n;j++) { d=0.0; for(i=kk+1;i<=n;i++) { ix=(i-1)*n+kk-1;iy=(i-1)*n+j-1; d=d+v[ix]*v[iy]/v[iz]; } d=-d; for(i=kk+1;i<=n;i++) { ix=(i-1)*n+j-1;iy=(i-1)*n+kk-1; v[ix]=v[ix]+d*v[iy]; } } } for(i=1;i<=n;i++) v[(i-1)*n+kk-1]=0.0; v[iz-n]=1.0; } for(i=1;i<=m;i++) for(j=1;j<=n;j++) a[(i-1)*n+j-1]=0.0; ml=mm; it=MAX_ITERA; while(1==1)////////////////////////////////// { if(mm==0) { ppp(a,e,s,v,m,n); free(s);free(e);free(w); return l; } if(it==0) { ppp(a,e,s,v,m,n); free(s);free(e);free(w); return -1; } kk=mm-1; //while((kk!=0)&&(fabs(e[kk-1])!=0.0)) while((kk!=0)&&(fabs(e[kk-1])>MIN_DOUBLE)) { d=fabs(s[kk-1])+fabs(s[kk]); dd=fabs(e[kk-1]); if(dd>eps*d) kk=kk-1; else e[kk-1]=0.0; } if(kk==mm-1) { kk=kk+1; if(s[kk-1]<0.0) { s[kk-1]=-s[kk-1]; for(i=1;i<=n;i++) { ix=(i-1)*n+kk-1; v[ix]=-v[ix]; } } while((kk!=ml)&&(s[kk-1]<s[kk])) { d=s[kk-1];s[kk-1]=s[kk];s[kk]=d; if(kk<n) for(i=1;i<=n;i++) { ix=(i-1)*n+kk-1;iy=(i-1)*n+kk; d=v[ix];v[ix]=v[iy];v[iy]=d; } if(kk<m) for(i=1;i<=m;i++) { ix=(i-1)*m+kk-1; iy=(i-1)*m+kk; d=u[ix];u[ix]=u[iy];u[iy]=d; } kk=kk+1; } it=MAX_ITERA; mm=mm-1; } else { ks=mm; //while((ks>kk)&&(fabs(s[ks-1])!=0.0)) while((ks>kk)&&(fabs(s[ks-1])>MIN_DOUBLE)) { d=0.0; if(ks!=mm) d=d+fabs(e[ks-1]); if(ks!=kk+1) d=d+fabs(e[ks-2]); dd=fabs(s[ks-1]); if(dd>eps*d) ks=ks-1; else s[ks-1]=0.0; } if(ks==kk) { kk=kk+1; d=fabs(s[mm-1]); t=fabs(s[mm-2]); if(t>d) d=t; t=fabs(e[mm-2]); if(t>d) d=t; t=fabs(s[kk-1]); if(t>d) d=t; t=fabs(e[kk-1]); if(t>d) d=t; sm=s[mm-1]/d;sml=s[mm-2]/d; eml=e[mm-2]/d; sk=s[kk-1]/d;ek=e[kk-1]/d; b=((sml+sm)*(sml-sm)+eml*eml)/2.0; c=sm*eml;c=c*c;shh=0.0; //if((b!=0.0)||(c!=0.0)) if((fabs(b)>MIN_DOUBLE)||(fabs(c)>MIN_DOUBLE)) { shh=sqrt(b*b+c); if(b<0.0) shh=-shh; shh=c/(b+shh); } fg[0]=(sk+sm)*(sk-sm)-shh; fg[1]=sk*ek; for(i=kk;i<=mm-1;i++) { sss(fg,cs); if(i!=kk) e[i-2]=fg[0]; fg[0]=cs[0]*s[i-1]+cs[1]*e[i-1]; e[i-1]=cs[0]*e[i-1]-cs[1]*s[i-1]; fg[1]=cs[1]*s[i]; s[i]=cs[0]*s[i]; //if((cs[0]!=1.0)||(cs[1]!=0.0)) if((fabs(cs[0]-1.0)>MIN_DOUBLE)||(fabs(cs[1])>MIN_DOUBLE)) for(j=1;j<=n;j++) { ix=(j-1)*n+i-1; iy=(j-1)*n+i; d=cs[0]*v[ix]+cs[1]*v[iy]; v[iy]=-cs[1]*v[ix]+cs[0]*v[iy]; v[ix]=d; } sss(fg,cs); s[i-1]=fg[0]; fg[0]=cs[0]*e[i-1]+cs[1]*s[i]; s[i]=-cs[1]*e[i-1]+cs[0]*s[i]; fg[1]=cs[1]*e[i]; e[i]=cs[0]*e[i]; if(i<m) //if((cs[0]!=1.0)||(cs[1]!=0.0)) if((fabs(cs[0]-1.0)>MIN_DOUBLE)||(fabs(cs[1])>MIN_DOUBLE)) for(j=1;j<=m;j++) { ix=(j-1)*m+i-1; iy=(j-1)*m+i; d=cs[0]*u[ix]+cs[1]*u[iy]; u[iy]=-cs[1]*u[ix]+cs[0]*u[iy]; u[ix]=d; } } e[mm-2]=fg[0]; it=it-1; } else { if(ks==mm) { kk=kk+1; fg[1]=e[mm-2];e[mm-2]=0.0; for(ll=kk;ll<=mm-1;ll++) { i=mm+kk-ll-1; fg[0]=s[i-1]; sss(fg,cs); s[i-1]=fg[0]; if(i!=kk) { fg[1]=-cs[1]*e[i-2]; e[i-2]=cs[0]*e[i-2]; } //if((cs[0]!=1.0)||(cs[1]!=0.0)) if((fabs(cs[0]-1.0)>MIN_DOUBLE)||(fabs(cs[1])>MIN_DOUBLE)) for(j=1;j<=n;j++) { ix=(j-1)*n+i-1; iy=(j-1)*n+mm-1; d=cs[0]*v[ix]+cs[1]*v[iy]; v[iy]=-cs[1]*v[ix]+cs[0]*v[iy]; v[ix]=d; } } } else { kk=ks+1; fg[1]=e[kk-2]; e[kk-2]=0.0; for(i=kk;i<=mm;i++) { fg[0]=s[i-1]; sss(fg,cs); s[i-1]=fg[0]; fg[1]=-cs[1]*e[i-1]; e[i-1]=cs[0]*e[i-1]; //if((cs[0]!=1.0)||(cs[1]!=0.0)) if((fabs(cs[0]-1.0)>MIN_DOUBLE)||(fabs(cs[1])>MIN_DOUBLE)) for(j=1;j<=m;j++) { ix=(j-1)*m+i-1; iy=(j-1)*m+kk-2; d=cs[0]*u[ix]+cs[1]*u[iy]; u[iy]=-cs[1]*u[ix]+cs[0]*u[iy]; u[ix]=d; } } } } } } free(s);free(e);free(w); return l; }
QVariantMap L2tpWidget::setting() const { NetworkManager::VpnSetting setting; setting.setServiceType(QLatin1String(NM_DBUS_SERVICE_L2TP)); NMStringMap data; if (!m_tmpAdvancedSetting.isNull()) { data = m_tmpAdvancedSetting->data(); } else { // retrieve the settings if the dialog has not been opened QScopedPointer<L2tpAdvancedWidget> adv(new L2tpAdvancedWidget(m_setting, Q_NULLPTR)); data = adv->setting(); } if (!m_tmpPppSetting.isNull()) { data.unite(m_tmpPppSetting->data()); } else { // retrieve the settings if the dialog has not been opened QScopedPointer<L2tpPPPWidget> ppp(new L2tpPPPWidget(m_setting, Q_NULLPTR)); data.unite(ppp->setting()); } NMStringMap secrets; if (!m_ui->gateway->text().isEmpty()) { data.insert(NM_L2TP_KEY_GATEWAY, m_ui->gateway->text()); } if (m_ui->cbUseCertificate->isChecked()) { data.insert(NM_L2TP_KEY_USE_CERT, "yes"); if (!m_ui->urCACertificate->text().isEmpty()) { data.insert(NM_L2TP_KEY_CERT_CA, m_ui->urCACertificate->text()); } if (!m_ui->urCertificate->text().isEmpty()) { data.insert(NM_L2TP_KEY_CERT_PUB, m_ui->urCertificate->text()); } if (!m_ui->urPrivateKey->text().isEmpty()) { data.insert(NM_L2TP_KEY_CERT_KEY, m_ui->urPrivateKey->text()); } data.insert(NM_L2TP_KEY_PASSWORD"-flags", QString::number(NetworkManager::Setting::NotRequired)); } else { if (!m_ui->username->text().isEmpty()) { data.insert(NM_L2TP_KEY_USER, m_ui->username->text()); } if (m_ui->password->isEnabled() && !m_ui->password->text().isEmpty()) { secrets.insert(NM_L2TP_KEY_PASSWORD, m_ui->password->text()); } switch (m_ui->password->passwordOption()) { case PasswordField::StoreForAllUsers: data.insert(NM_L2TP_KEY_PASSWORD"-flags", QString::number(NetworkManager::Setting::None)); break; case PasswordField::StoreForUser: data.insert(NM_L2TP_KEY_PASSWORD"-flags", QString::number(NetworkManager::Setting::AgentOwned)); break; default: data.insert(NM_L2TP_KEY_PASSWORD"-flags", QString::number(NetworkManager::Setting::NotSaved)); }; if (!m_ui->domain->text().isEmpty()) { data.insert(NM_L2TP_KEY_DOMAIN, m_ui->domain->text()); } } setting.setData(data); setting.setSecrets(secrets); return setting.toMap(); }