rigid_sys::RK rigid_sys::delta(vector<dynamic_info> &start,number_t t0,number_t h) { int i,N=start.size(); vector<dynamic_info> temp=start; vector<dynamic_info> k1=get_dynamic(t0,temp); for(i=0;i<N;i++) k1[i]=k1[i]*h; for(i=0;i<N;i++) temp[i]=start[i]+k1[i]/4; vector<dynamic_info> k2=get_dynamic(t0+h/4,temp); for(i=0;i<N;i++) k2[i]=k2[i]*h; for(i=0;i<N;i++) temp[i]=start[i]+3.0/32*k1[i]+9.0/32*k2[i]; vector<dynamic_info> k3=get_dynamic(t0+3.0/8*h,temp); for(i=0;i<N;i++) k3[i]=k3[i]*h; for(i=0;i<N;i++) temp[i]=start[i]+1932.0/2197*k1[i]-7200.0/2197*k2[i]+7296.0/2197*k3[i]; vector<dynamic_info> k4=get_dynamic(t0+12.0/13*h,temp); for(i=0;i<N;i++) k4[i]=k4[i]*h; for(i=0;i<N;i++) temp[i]=start[i]+439.0/216*k1[i]-8*k2[i]+3680.0/513*k3[i]-845.0/4104*k4[i]; vector<dynamic_info> k5=get_dynamic(t0+h,temp); for(i=0;i<N;i++) k5[i]=k5[i]*h; for(i=0;i<N;i++) temp[i]=start[i]-8.0/27*k1[i]+2*k2[i]-3544.0/2565*k3[i]+1859.0/4104*k4[i]-11.0/40*k5[i]; vector<dynamic_info> k6=get_dynamic(t0+h/2,temp); for(i=0;i<N;i++) k6[i]=k6[i]*h; RK rk; for(i=0;i<N;i++) { temp[i]=25.0/216*k1.at(i)+1408.0/2565*k3.at(i)+2197.0/4104*k4.at(i)-1.0/5*k5.at(i); rk.RK4.push_back(temp[i]); temp[i]=16.0/135*k1.at(i)+6656.0/12825*k3.at(i)+28561.0/56430*k4.at(i)-9.0/50*k5.at(i)+2.0/55*k6.at(i); rk.RK5.push_back(temp[i]); } return rk; }
my_bool get_dynamic_string_array(DYNAMIC_STRING_ARRAY *array, char **dst, size_t *dst_len, size_t idx) { dynstr_pos_info pos_info; DBUG_ENTER("get_dynamic_string_array"); if (!array || !dst || idx >= array->pos_info_arr->elements) { DBUG_RETURN(TRUE); } get_dynamic(array->pos_info_arr, (uchar *) &pos_info, idx); *dst = array->dynstr->str + pos_info.elem_off; if (!*dst) { DBUG_RETURN(TRUE); } if (dst_len) { *dst_len = pos_info.elem_size; } DBUG_RETURN(FALSE); }
/* $begin doit */ void doit(int fd) { int is_static,contentLength=0,isGet=1; struct stat sbuf; char buf[MAXLINE], method[MAXLINE], uri[MAXLINE], version[MAXLINE]; char filename[MAXLINE], cgiargs[MAXLINE],httpspostdata[MAXLINE]; rio_t rio; memset(buf,0,MAXLINE); if(ishttps) { ssl=SSL_new(ssl_ctx); SSL_set_fd(ssl,fd); if(SSL_accept(ssl)==0) { ERR_print_errors_fp(stderr); exit(1); } SSL_read(ssl,buf,sizeof(buf)); printf(".............\n"); printf("%s",buf); printf(".............\n"); } else { /* Read request line and headers */ Rio_readinitb(&rio, fd); Rio_readlineb(&rio, buf, MAXLINE); } sscanf(buf, "%s %s %s", method, uri, version); /* if (strcasecmp(method, "GET")!=0&&strcasecmp(method,"POST")!=0) { clienterror(fd, method, "501", "Not Implemented", "Tiny does not implement this method"); return; } */ /* Parse URI from GET request */ is_static = parse_uri(uri, filename, cgiargs); if (lstat(filename, &sbuf) < 0) { clienterror(fd, filename, "404", "Not found", "Tiny couldn't find this file"); return; } if(S_ISDIR(sbuf.st_mode)&&isShowdir) serve_dir(fd,filename); if (strcasecmp(method, "POST")==0) isGet=0; if (is_static) { /* Serve static content */ if(!ishttps) get_requesthdrs(&rio); /* because https already read the headers -> SSL_read() */ if (!(S_ISREG(sbuf.st_mode)) || !(S_IRUSR & sbuf.st_mode)) { clienterror(fd, filename, "403", "Forbidden", "Tiny couldn't read the file"); return; } serve_static(fd, filename, sbuf.st_size); } else { /* Serve dynamic content */ if (!(S_ISREG(sbuf.st_mode)) || !(S_IXUSR & sbuf.st_mode)) { clienterror(fd, filename, "403", "Forbidden", "Tiny couldn't run the CGI program"); return; } if(isGet) { if(!ishttps) get_requesthdrs(&rio); /* because https already read headers by SSL_read() */ get_dynamic(fd, filename, cgiargs); } else { printf("ishttps:%d\n",ishttps); if(ishttps) https_getlength(buf,&contentLength); else post_requesthdrs(&rio,&contentLength); post_dynamic(fd, filename,contentLength,&rio); } } }