int main( ) { double result; double x; printf( "please input a number \n" ); scanf( "%lf",&x); result=3*my_power( x, 5)+2*my_power( x,4 )-5*my_power( x,3 )-my_power( x,2 )+7*x-6; printf( "the result is %lf\n",result ); return 0; }
FLOAT_TYPE B_ad(int nx, int ny, int nz, system_t *s, parameters_t *p) { int mx, my, mz; int nmx, nmy, nmz; FLOAT_TYPE fnmx,fnmy,fnmz; FLOAT_TYPE km2; FLOAT_TYPE ret = 0.0; FLOAT_TYPE U2; FLOAT_TYPE mesh_i = 1.0/p->mesh; for (mx = -P3M_BRILLOUIN; mx <= P3M_BRILLOUIN; mx++) { nmx = nx + p->mesh*mx; fnmx = nmx * mesh_i; for (my = -P3M_BRILLOUIN; my <= P3M_BRILLOUIN; my++) { nmy = ny + p->mesh*my; fnmy = nmy * mesh_i; for (mz = -P3M_BRILLOUIN; mz <= P3M_BRILLOUIN; mz++) { nmz = nz + p->mesh*mz; fnmz = nmz * mesh_i; km2 = SQR(2.0*PI/s->length) * ( SQR ( nmx ) + SQR ( nmy ) + SQR ( nmz ) ); U2 = my_power(sinc(fnmx)*sinc(fnmy)*sinc(fnmz), 2*p->cao); ret += U2 * 4.0 * PI * EXP(- km2 / ( 4.0 * SQR(p->alpha))); } } } return ret; }
FLOAT_TYPE A_ad(int nx, int ny, int nz, system_t *s, parameters_t *p) { int mx, my, mz; int nmx, nmy, nmz; FLOAT_TYPE fnmx,fnmy,fnmz; FLOAT_TYPE km2; FLOAT_TYPE U2, U2m = 0.0, U2km = 0.0; FLOAT_TYPE mesh_i = 1.0/p->mesh; for (mx = -P3M_BRILLOUIN; mx <= P3M_BRILLOUIN; mx++) { nmx = nx + p->mesh*mx; fnmx = nmx * mesh_i; for (my = -P3M_BRILLOUIN; my <= P3M_BRILLOUIN; my++) { nmy = ny + p->mesh*my; fnmy = nmy * mesh_i; for (mz = -P3M_BRILLOUIN; mz <= P3M_BRILLOUIN; mz++) { nmz = nz + p->mesh*mz; fnmz = nmz * mesh_i; U2 = my_power(sinc(fnmx)*sinc(fnmy)*sinc(fnmz), 2*p->cao); km2 = SQR(2.0*PI/s->length) * ( SQR ( nmx ) + SQR ( nmy ) + SQR ( nmz ) ); U2m += U2; U2km += U2 * km2; } } } return U2m*U2km; }
long my_htoi(char const s[]) { int i, j, len = 0; long sum = 0; int startStr = 0; if (s == NULL) { return INVALID; } if (s[0] == '0' && (s[1] == 'x' || s[1] == 'X')) { startStr = 2; } for (i = 0; s[i] != '\0'; ++i); len = i; j = 0; for (i = len - 1; i >= startStr; --i) { if (s[i] >= '0' && s[i] <= '9' ) { sum += (s[i] - '0') * my_power(16, j); } else if (s[i] >= 'a' && s[i] <= 'f') { sum += (s[i] - 'a' + 10) * my_power(16, j); } else if (s[i] >= 'A' && s[i] <= 'F') { sum += (s[i] - 'A' + 10) * my_power(16, j); } else { return INVALID; } ++j; } return sum; }
void Aliasing_sums_ik_i( system_t *s, parameters_t *p, data_t *d, int NX, int NY, int NZ, FLOAT_TYPE *Zaehler, FLOAT_TYPE *Nenner1, FLOAT_TYPE *Nenner2) { FLOAT_TYPE S1,S2,S3; FLOAT_TYPE fak1,fak2,zwi; int MX,MY,MZ; FLOAT_TYPE NMX,NMY,NMZ; FLOAT_TYPE NM2; FLOAT_TYPE expo, TE; int Mesh = d->mesh; FLOAT_TYPE Leni = 1.0/s->length; fak1 = 1.0/(FLOAT_TYPE)Mesh; fak2 = SQR(PI/p->alpha); Zaehler[0] = Zaehler[1] = Zaehler[2] = *Nenner1 = *Nenner2 = 0.0; for ( MX = -P3M_BRILLOUIN; MX <= P3M_BRILLOUIN; MX++ ) { NMX = d->nshift[NX] + Mesh*MX; S1 = my_power( sinc(fak1*NMX), 2*p->cao ); for ( MY = -P3M_BRILLOUIN; MY <= P3M_BRILLOUIN; MY++ ) { NMY = d->nshift[NY] + Mesh*MY; S2 = S1 * my_power( sinc(fak1*NMY), 2*p->cao ); for ( MZ = -P3M_BRILLOUIN; MZ <= P3M_BRILLOUIN; MZ++ ) { NMZ = d->nshift[NZ] + Mesh*MZ; S3 = S2*my_power( sinc(fak1*NMZ), 2*p->cao ); NM2 = SQR ( NMX*Leni ) + SQR ( NMY*Leni ) + SQR ( NMZ*Leni ); *Nenner1 += S3; expo = fak2*NM2; TE = EXP ( -expo ); zwi = S3 * TE/NM2; Zaehler[0] += NMX*zwi*Leni; Zaehler[1] += NMY*zwi*Leni; Zaehler[2] += NMZ*zwi*Leni; if (((MX+MY+MZ)%2)==0) //even term *Nenner2 += S3; else //odd term: minus sign! *Nenner2 -= S3; } } } }
void Aliasing_sums_ad(int NX, int NY, int NZ, system_t *s, parameters_t *p, data_t *d, FLOAT_TYPE *Zaehler, FLOAT_TYPE *Nenner1, FLOAT_TYPE *Nenner2) { FLOAT_TYPE S1,S2,S3; FLOAT_TYPE fak1,fak2,zwi; int MX,MY,MZ; FLOAT_TYPE NMX,NMY,NMZ; FLOAT_TYPE NM2; FLOAT_TYPE expo, TE; int Mesh = p->mesh; FLOAT_TYPE Len = s->length; FLOAT_TYPE Leni = 1.0/Len; fak1 = 1.0/(FLOAT_TYPE)Mesh; fak2 = SQR(PI/p->alpha); *Zaehler = *Nenner1 = *Nenner2 = 0.0; for (MX = -P3M_BRILLOUIN; MX <= P3M_BRILLOUIN; MX++) { NMX = d->nshift[NX] + Mesh*MX; S1 = my_power(sinc(fak1*NMX), 2*p->cao); for (MY = -P3M_BRILLOUIN; MY <= P3M_BRILLOUIN; MY++) { NMY = d->nshift[NY] + Mesh*MY; S2 = S1*my_power(sinc(fak1*NMY), 2*p->cao); for (MZ = -P3M_BRILLOUIN; MZ <= P3M_BRILLOUIN; MZ++) { NMZ = d->nshift[NZ] + Mesh*MZ; S3 = S2*my_power(sinc(fak1*NMZ), 2*p->cao); NM2 = SQR(NMX*Leni) + SQR(NMY*Leni) + SQR(NMZ*Leni); *Nenner1 += S3; *Nenner2 += S3 * NM2; expo = fak2*NM2; TE = EXP(-expo); zwi = S3 * TE; *Zaehler += zwi; } } } }
unsigned int my_power(int nb, int power) { unsigned int res; if (power < 0) res = 0; else { res = 1; if (power > 0) res = my_power(nb, power - 1) * nb; } return (res); }
bool witness(int a,int m,int j,int n) { int x,y; x=my_power(a,m,n); while(j--) { y=Multi_Mod(x,x,n); if(y==1&&x!=1&&x!=n-1) return true; x=y; } return y!=1; }
int main(int argc, char* argv) { int n = 1; int cnt = 0; while (1) { int cycle_cnt = 0; for (int i = 1; i <= 9; i++) { if (my_power(i, n) == n) cycle_cnt++; } if (cycle_cnt == 0) break; cnt = cnt + cycle_cnt; n++; } printf("count=%d\n", cnt); return 0; }
static char *oct_to_dec(char *oct_num) { char *dec_num = NULL; int dec_num_int = 0; unsigned int len; len = strlen(oct_num); dec_num = mmalloc(sizeof (char) * len); bzero(dec_num, len); for (int i = len - 1; i >= 0; i--) dec_num_int += (oct_num[i] - '0') * my_power(8, len - i - 1); snprintf(dec_num, 3, "%i", dec_num_int); return (dec_num); }
int my_put_nbr(int nb) { int power; if (nb < 0) { nb = nb * -1; my_putchar('-'); } power = my_power(nb); while (power >= 1) { my_putchar (nb / power % 10 + 48); power = power / 10; } return (0); }
void p3m_tune_aliasing_sums_ik_i (int nx, int ny, int nz, system_t *s, parameters_t *p, FLOAT_TYPE *alias1, FLOAT_TYPE *alias2, FLOAT_TYPE *alias3, FLOAT_TYPE *alias4) { int mx,my,mz; FLOAT_TYPE nmx,nmy,nmz; FLOAT_TYPE fnmx,fnmy,fnmz; FLOAT_TYPE ex,ex2,nm2,U2,factor1; int mesh = p->mesh; FLOAT_TYPE mesh_i = 1.0 / mesh; factor1 = SQR(PI / ( p->alpha * s->length ) ); *alias1 = *alias2 = *alias3 = *alias4 = 0.0; for (mx=-P3M_BRILLOUIN_TUNING; mx<=P3M_BRILLOUIN_TUNING; mx++) { fnmx = mesh_i * (nmx = nx + mx*mesh); for (my=-P3M_BRILLOUIN_TUNING; my<=P3M_BRILLOUIN_TUNING; my++) { fnmy = mesh_i * (nmy = ny + my*mesh); for (mz=-P3M_BRILLOUIN_TUNING; mz<=P3M_BRILLOUIN_TUNING; mz++) { fnmz = mesh_i * (nmz = nz + mz*mesh); nm2 = SQR(nmx) + SQR(nmy) + SQR(nmz); ex = EXP(-factor1*nm2); ex2 = SQR( ex ); U2 = my_power(sinc(fnmx)*sinc(fnmy)*sinc(fnmz), 2*p->cao); *alias1 += ex2 / nm2; *alias2 += U2 * ex * (nx*nmx + ny*nmy + nz*nmz) / nm2; *alias3 += U2; if (((mx+my+mz)%2)==0) { //consider only even terms! *alias4 += U2; } else { *alias4 -= U2; } } } } }
int my_power_rec(int nb, int power) { int i; int var_nb; if (power == 0) { nb = 1; } else if (power < 0) { nb = 0; } else { i = 0; var_nb = nb; nb = my_power(nb, power, i, var_nb); } return (nb); }
int my_power(int nb, int power, int i, int var_nb) { if (i < (power - 1)) { if (nb > 0) { nb = nb * var_nb; } else { nb = 0; } i++; nb = my_power(nb, power, i, var_nb); } else { return (nb); } return (nb); }
void p3m_tune_aliasing_sums_ad(int nx, int ny, int nz, system_t *s, parameters_t *p, FLOAT_TYPE *alias1, FLOAT_TYPE *alias2, FLOAT_TYPE *alias3,FLOAT_TYPE *alias4) { int mx,my,mz; FLOAT_TYPE nmx,nmy,nmz; FLOAT_TYPE fnmx,fnmy,fnmz; FLOAT_TYPE ex,ex2,nm2,U2,factor1; FLOAT_TYPE mesh_i = 1.0 / p->mesh; factor1 = SQR ( PI / ( p->alpha*s->length ) ); *alias1 = *alias2 = *alias3 = *alias4 = 0.0; for (mx=-P3M_BRILLOUIN_TUNING; mx<=P3M_BRILLOUIN_TUNING; mx++) { fnmx = mesh_i * (nmx = nx + mx*p->mesh); for (my=-P3M_BRILLOUIN_TUNING; my<=P3M_BRILLOUIN_TUNING; my++) { fnmy = mesh_i * (nmy = ny + my*p->mesh); for (mz=-P3M_BRILLOUIN_TUNING; mz<=P3M_BRILLOUIN_TUNING; mz++) { fnmz = mesh_i * (nmz = nz + mz*p->mesh); nm2 = SQR ( nmx ) + SQR ( nmy ) + SQR ( nmz ); ex = EXP(-factor1*nm2); ex2 = SQR( ex ); U2 = my_power(sinc(fnmx)*sinc(fnmy)*sinc(fnmz), 2*p->cao); *alias1 += ex2 / nm2; *alias2 += U2 * ex; *alias3 += U2 * nm2; *alias4 += U2; } } } }
FLOAT_TYPE A_ad_water(int nx, int ny, int nz, system_t *s, parameters_t *p) { int mx, my, mz; int nmx, nmy, nmz; FLOAT_TYPE fnmx,fnmy,fnmz; FLOAT_TYPE km2; FLOAT_TYPE U2, U2m = 0.0, U2km = 0.0; FLOAT_TYPE mesh_i = 1.0/p->mesh; FLOAT_TYPE sin_term = 0.0, kmdHO, kmdHH; for (mx = -P3M_BRILLOUIN; mx <= P3M_BRILLOUIN; mx++) { nmx = nx + p->mesh*mx; fnmx = nmx * mesh_i; for (my = -P3M_BRILLOUIN; my <= P3M_BRILLOUIN; my++) { nmy = ny + p->mesh*my; fnmy = nmy * mesh_i; for (mz = -P3M_BRILLOUIN; mz <= P3M_BRILLOUIN; mz++) { nmz = nz + p->mesh*mz; fnmz = nmz * mesh_i; U2 = my_power(sinc(fnmx)*sinc(fnmy)*sinc(fnmz), 2*p->cao); km2 = SQR(2.0*PI/s->length) * ( SQR ( nmx ) + SQR ( nmy ) + SQR ( nmz ) ); /* sin_term = 1.0; */ kmdHO = 1.0 * SQRT(km2); kmdHH = 1.63 * SQRT(km2); sin_term = -0.67*SIN(kmdHO)/kmdHO + 0.34 * SIN(kmdHH)/kmdHH; U2m += U2 * sin_term; U2km += U2 * km2; } } } return U2m*U2km; }
FLOAT_TYPE B_ad_water(int nx, int ny, int nz, system_t *s, parameters_t *p) { int mx, my, mz; int nmx, nmy, nmz; FLOAT_TYPE fnmx,fnmy,fnmz; FLOAT_TYPE km2; FLOAT_TYPE ret = 0.0; FLOAT_TYPE U2; FLOAT_TYPE mesh_i = 1.0/p->mesh; FLOAT_TYPE sin_term = 0.0, kmdHH, kmdHO; FLOAT_TYPE P3M_BRILLOUIN_LOCAL = P3M_BRILLOUIN; for (mx = -P3M_BRILLOUIN_LOCAL; mx <= P3M_BRILLOUIN_LOCAL; mx++) { nmx = nx + p->mesh*mx; fnmx = nmx * mesh_i; for (my = -P3M_BRILLOUIN_LOCAL; my <= P3M_BRILLOUIN_LOCAL; my++) { nmy = ny + p->mesh*my; fnmy = nmy * mesh_i; for (mz = -P3M_BRILLOUIN_LOCAL; mz <= P3M_BRILLOUIN_LOCAL; mz++) { nmz = nz + p->mesh*mz; fnmz = nmz * mesh_i; km2 = SQR(2.0*PI/s->length) * ( SQR ( nmx ) + SQR ( nmy ) + SQR ( nmz ) ); kmdHO = 1.0 * SQRT(km2); kmdHH = 1.63 * SQRT(km2); sin_term = -0.67*SIN(kmdHO)/kmdHO + 0.34 * SIN(kmdHH)/kmdHH; U2 = my_power(sinc(fnmx)*sinc(fnmy)*sinc(fnmz), 2*p->cao); ret += U2 * 4.0 * PI * EXP(- km2 / ( 4.0 * SQR(p->alpha))) * sin_term; } } } return ret; }
/*------------------------------------------------------------------------- * (function: define_logical_function) *-----------------------------------------------------------------------*/ void define_logical_function(nnode_t *node, short type, FILE *out) { int i, j; char *temp_string; int flag = 0; fprintf(out, ".names"); if (global_args.high_level_block != NULL) { /* printout all the port hookups */ for (i = 0; i < node->num_input_pins; i++) { /* now hookup the input wires with their respective ports. [1+i] to skip output spot. */ if (node->input_pins[i]->net->driver_pin->node->related_ast_node != NULL) fprintf(out, " %s^^%i-%i", node->input_pins[i]->net->driver_pin->node->name, node->input_pins[i]->net->driver_pin->node->related_ast_node->far_tag, node->input_pins[i]->net->driver_pin->node->related_ast_node->high_number); else fprintf(out, " %s", node->input_pins[i]->net->driver_pin->node->name); } /* now print the output */ if (node->related_ast_node != NULL) fprintf(out, " %s^^%i-%i", node->name, node->related_ast_node->far_tag, node->related_ast_node->high_number); else fprintf(out, " %s", node->name); } else { /* printout all the port hookups */ for (i = 0; i < node->num_input_pins; i++) { /* now hookup the input wires with their respective ports. [1+i] to skip output spot. */ /* Just print the driver_pin->name NOT driver_pin->node->name -- KEN */ nnet_t *net = node->input_pins[i]->net; if (net && net->driver_pin) { if (net->driver_pin->name != NULL) { if ((net->driver_pin->node->type == MULTIPLY) || (net->driver_pin->node->type == HARD_IP) || (net->driver_pin->node->type == MEMORY) || (net->driver_pin->node->type == ADD) || (net->driver_pin->node->type == MINUS) ) { fprintf(out, " %s", net->driver_pin->name); } } else { fprintf(out, " %s", net->driver_pin->node->name); } } else { int line_number = node->related_ast_node?node->related_ast_node->line_number:0; warning_message(NETLIST_ERROR, line_number, -1, "Net %s driving node %s is itself undriven.", net->name, node->name); fprintf(out, " %s", "unconn"); } } /* now print the output */ fprintf(out, " %s", node->name); } fprintf(out, "\n"); oassert(node->num_output_pins == 1); /* print out the blif definition of this gate */ switch (node->type) { case LOGICAL_AND: { /* generates: 111111 1 */ for (i = 0; i < node->num_input_pins; i++) { fprintf(out, "1"); } fprintf(out, " 1\n"); break; } case LOGICAL_OR: { /* generates: 1----- 1\n-1----- 1\n ... */ for (i = 0; i < node->num_input_pins; i++) { for (j = 0; j < node->num_input_pins; j++) { if (i == j) fprintf(out, "1"); else fprintf(out, "-"); } fprintf(out, " 1\n"); } break; } case LOGICAL_NAND: { /* generates: 0----- 1\n-0----- 1\n ... */ for (i = 0; i < node->num_input_pins; i++) { for (j = 0; j < node->num_input_pins; j++) { if (i == j) fprintf(out, "0"); else fprintf(out, "-"); } fprintf(out, " 1\n"); } break; } case LOGICAL_NOT: case LOGICAL_NOR: { /* generates: 0000000 1 */ for (i = 0; i < node->num_input_pins; i++) { fprintf(out, "0"); } fprintf(out, " 1\n"); break; } case LOGICAL_EQUAL: case LOGICAL_XOR: { oassert(node->num_input_pins <= 3); /* generates: a 1 when odd number of 1s */ for (i = 0; i < my_power(2, node->num_input_pins); i++) { if ((i % 8 == 1) || (i % 8 == 2) || (i % 8 == 4) || (i % 8 == 7)) { temp_string = convert_long_long_to_bit_string(i, node->num_input_pins); fprintf(out, "%s", temp_string); free(temp_string); fprintf(out, " 1\n"); } } break; } case NOT_EQUAL: case LOGICAL_XNOR: { oassert(node->num_input_pins <= 3); for (i = 0; i < my_power(2, node->num_input_pins); i++) { if ((i % 8 == 0) || (i % 8 == 3) || (i % 8 == 5) || (i % 8 == 6)) { temp_string = convert_long_long_to_bit_string(i, node->num_input_pins); fprintf(out, "%s", temp_string); free(temp_string); fprintf(out, " 1\n"); } } break; } default: oassert(FALSE); break; } fprintf(out, "\n"); if (flag == 1) output_blif_pin_connect(node, out); }
data_t *Init_data(const method_t *m, system_t *s, parameters_t *p) { int mesh3 = p->mesh*p->mesh*p->mesh; data_t *d = (data_t *)Init_array(1, sizeof(data_t)); d->mesh = p->mesh; if ( m->flags & METHOD_FLAG_Qmesh) d->Qmesh = (FLOAT_TYPE *)Init_array(2*mesh3, sizeof(FLOAT_TYPE)); else d->Qmesh = NULL; if ( m->flags & METHOD_FLAG_ik ) { d->Fmesh = Init_vector_array(2*mesh3); d->Dn = (FLOAT_TYPE *)Init_array(d->mesh, sizeof(FLOAT_TYPE)); Init_differential_operator(d); } else { d->Fmesh = NULL; d->Dn = NULL; } d->nshift = NULL; if ( m->flags & METHOD_FLAG_nshift ) { d->nshift = (FLOAT_TYPE *)Init_array(d->mesh, sizeof(FLOAT_TYPE)); Init_nshift(d); } d->dQ[0] = NULL; d->dQ[1] = NULL; if( m->flags & METHOD_FLAG_self_force_correction) d->self_force_corrections = (FLOAT_TYPE *)Init_array(my_power(1+2*P3M_SELF_BRILLOUIN, 3), 3*sizeof(FLOAT_TYPE)); if ( m->flags & METHOD_FLAG_ad ) { int i; int max = ( m->flags & METHOD_FLAG_interlaced) ? 2 : 1; for (i = 0; i < max; i++) { d->dQ[i] = (FLOAT_TYPE *)Init_array( 3*s->nparticles*p->cao3, sizeof(FLOAT_TYPE) ); } } if ( m->flags & METHOD_FLAG_ca ) { int i; int max = ( m->flags & METHOD_FLAG_interlaced ) ? 2 : 1; d->cf[1] = NULL; d->ca_ind[1] = NULL; for (i = 0; i < max; i++) { d->cf[i] = (FLOAT_TYPE *)Init_array( p->cao3 * s->nparticles, sizeof(FLOAT_TYPE)); d->ca_ind[i] = (int *)Init_array( 3*s->nparticles, sizeof(int)); } if( !p->tuning ) d->inter = Init_interpolation( p->ip, m->flags & METHOD_FLAG_ad ); else { if(dummy_inter == NULL) dummy_inter = Init_interpolation( 6, 1 ); d->inter = dummy_inter; } } else { d->cf[0] = NULL; d->ca_ind[0] = NULL; d->cf[1] = NULL; d->ca_ind[1] = NULL; d->inter = NULL; } if ( m->flags & METHOD_FLAG_G_hat) { if( !p->tuning) { d->G_hat = (FLOAT_TYPE *)Init_array(mesh3, sizeof(FLOAT_TYPE)); m->Influence_function( s, p, d ); } else { dummy_g_realloc(d->mesh); d->G_hat = dummy_g; } } else d->G_hat = NULL; d->forward_plans = 0; d->backward_plans = 0; return d; }