Esempio n. 1
0
int main(int argc, char * argv[])
{
	if(argc != 2)
		return 1;	// invalid number of parameters

	int n = std::atoi(argv[1]); 
	
	//Get Triangular Number:
	int triangularNr = triangular(n);
	
	//Check for error value (-1):
	if(triangularNr == -1){
		std::cout << "domain = [0;" << maximum << "],codomain = [0;" ;
		pretty_print(triangular(maximum));
		std::cout << "]\n";
	}
	//Print answer:
	else{
		std::cout << n << "-te Dreieckszahl: ";
		pretty_print(triangularNr);
		std::cout << "\n";
 	}

	return 0;
}
void find_triplet(int in) {
  //int out[3];
  int try1, try2, try3, t1remainder, t2remainder, t3remainder;
  for (try1 = 1; try1 < find_next_triangular(in); try1++) {
    t1remainder = in - triangular(try1);
    //printf("t1remainder: %i", t1remainder);
    if (t1remainder == 0) {
      printf("%i = %i\n", in, triangular(try1));
      return;
    } else {
      for (try2 = 1; try2 < find_next_triangular(t1remainder); try2++) {
	t2remainder = t1remainder - triangular(try2);
	if (t2remainder == 0) {
	  printf("%i = %i + %i\n", in, triangular(try1), triangular(try2));
	  return;
	} else {
	  for (try3 = 1; try3 < find_next_triangular(t2remainder); try3++) {
	    t3remainder = t2remainder - triangular(try3);
	    if (t3remainder == 0) {
	      printf("%i =  %i + %i + %i \n", in, triangular(try1), triangular(try2), triangular(try3));
	      return;
	    }
	  }
	}
      }
    }
  }
}
Esempio n. 3
0
int main(int argc, char * argv[])
{
	if(argc != 2)
		return 1;	// invalid number of parameters

	int n = std::atoi(argv[1]); 


	const int CoDomainMin = 1;				//lowest possible value
	const int CoDomainMax = pow(2, sizeof(int) * 8 - 1) -1; //Max value for int
	const int DomainMin = 1;				//Defined in formula
	const int DomainMax = GetDomainMax(CoDomainMax);	//Calculate this value because sizeof(int) could change

	if ( (n > DomainMax) || (n < DomainMin) ) {
		std::cout << "domain = [";
		pretty_print(DomainMin); std::cout << ";"; pretty_print(DomainMax);
		std::cout << "], codomain = [";
		pretty_print(CoDomainMin); std::cout << ";"; pretty_print(CoDomainMax);
		std::cout << "]" << std::endl;
		return 2;
	}

	pretty_print(triangular(n)); std::cout << std::endl;
	//std::cout << "Hello World";

	return 0;
}
Esempio n. 4
0
int find_next_triangular(int i) {
  int next_triangular_index = 0;
  while(triangular(next_triangular_index) <= i) {
    next_triangular_index++;
  }
  return next_triangular_index;
}
Esempio n. 5
0
/* Evaluates the specified membership function in the given 'x' value */
static double
eval_MF (MF_t mf, double x)
{
	switch (mf.k) {
	
	case (triang):
		return triangular (mf.p[0], mf.p[1], mf.p[2], x);
		break;
		
	case (trap):
		return trapezoidal (mf.p[0], mf.p[1], mf.p[2], mf.p[3], x);
		break;
		
	case (gauss):
		return gaussian (mf.p[0], mf.p[1], x);
		break;
		
	case (bell):
		return belly (mf.p[0], mf.p[1], mf.p[2], x);
		break;
		
	default:
		fprintf (stderr, "anfis.c: eval_MF: ERROR: unknown MF\n");
		return 0.0;
		break;
	}
}
int find_next_triangular(int in) {
  int cur = 1;
  int cur_triangular = 0;
  while (1) {
    cur_triangular = triangular(cur);
    // printf("Cur: %i, Cur_tri: %i \n", cur, cur_triangular);
    if (cur_triangular > in) {
      return cur;
    }
    cur ++;
  }
}
Esempio n. 7
0
unsigned int divisoresTriangular(unsigned int x){ //Cant. de divisores de cada numero triangular
	long long n;
	long long i;
	unsigned int cant = 0; //Cantidad de divisores del numero triangular
	n = triangular(x);
	i = n;
	while (i > 0){
		if (n%i == 0){
			cant++;
		}
		i--;
	}
	return cant;
}
Esempio n. 8
0
void test_eigen2_triangular()
{
  CALL_SUBTEST_8( selfadjoint() );
  for(int i = 0; i < g_repeat ; i++) {
    CALL_SUBTEST_1( triangular(Matrix<float, 1, 1>()) );
    CALL_SUBTEST_2( triangular(Matrix<float, 2, 2>()) );
    CALL_SUBTEST_3( triangular(Matrix3d()) );
    CALL_SUBTEST_4( triangular(MatrixXcf(4, 4)) );
    CALL_SUBTEST_5( triangular(Matrix<std::complex<float>,8, 8>()) );
    CALL_SUBTEST_6( triangular(MatrixXd(17,17)) );
    CALL_SUBTEST_7( triangular(Matrix<float,Dynamic,Dynamic,RowMajor>(5, 5)) );
  }
}
Esempio n. 9
0
double *xtract_init_window(const int N, const int type)
{
    double *window;

    window = malloc(N * sizeof(double));

    switch (type)
    {
    case XTRACT_GAUSS:
        gauss(window, N, 0.4);
        break;
    case XTRACT_HAMMING:
        hamming(window, N);
        break;
    case XTRACT_HANN:
        hann(window, N);
        break;
    case XTRACT_BARTLETT:
        bartlett(window, N);
        break;
    case XTRACT_TRIANGULAR:
        triangular(window, N);
        break;
    case XTRACT_BARTLETT_HANN:
        bartlett_hann(window, N);
        break;
    case XTRACT_BLACKMAN:
        blackman(window, N);
        break;
    case XTRACT_KAISER:
        kaiser(window, N, 3 * PI);
        break;
    case XTRACT_BLACKMAN_HARRIS:
        blackman_harris(window, N);
        break;
    default:
        hann(window, N);
        break;
    }

    return window;
}
Esempio n. 10
0
void find_triplet(int in, int out[]) {
  int max_index = find_next_triangular(in);
  for (int i = 0; i < max_index; i++) {
    for (int j = 0; j < max_index; j++) {
      for (int k = 0; k < max_index; k++) {
        if (triangular(i) + triangular(j) + triangular(k) == in) {
          out[0] = triangular(i);
          out[1] = triangular(j);
          out[2] = triangular(k);
          return;
        }
      }
    }
  }
}
Esempio n. 11
0
int main(int argc, char *argv[]){
  unsigned long ti=1, pi=1, hi=1;
  unsigned long tn, pn, hn;
  unsigned long found = 0;
  tn=triangular(ti);
  pn=pentagonal(pi);
  hn=hexagonal(hi);
  do{
    while(pn < hn) pi++;
    if(pi > num_pn) { pi = num_pn; find_all_upto(pn[num_pn]*3); continue;}
    if(hn[hi] < pn[pi]) { hi++; printf("."); continue;}
    ti = pi;
    while(tn[ti] < pn[pi]) ti++;
    if(ti > num_tn) { ti = num_tn; find_all_upto(tn[num_tn]*3); continue;}
    if(pn[pi] < tn[ti]) { pi++; printf(","); continue;}
    if(pn[pi] == hn[hi] && hn[hi] == tn[ti]) {
      found++;
      hi++; printf("\n%lu %lu %lu %lu\n", tn[ti], ti, pi, hi);
    }
  } while(found<2)
  return 0;
}
Esempio n. 12
0
// create spgram object
//  _nfft       : FFT size
//  _wtype      : window type, e.g. LIQUID_WINDOW_HAMMING
//  _window_len : window length
//  _delay      : delay between transforms, _delay > 0
SPGRAM() SPGRAM(_create)(unsigned int _nfft,
                         int          _wtype,
                         unsigned int _window_len,
                         unsigned int _delay)
{
    // validate input
    if (_nfft < 2) {
        fprintf(stderr,"error: spgram%s_create(), fft size must be at least 2\n", EXTENSION);
        exit(1);
    } else if (_window_len > _nfft) {
        fprintf(stderr,"error: spgram%s_create(), window size cannot exceed fft size\n", EXTENSION);
        exit(1);
    } else if (_window_len == 0) {
        fprintf(stderr,"error: spgram%s_create(), window size must be greater than zero\n", EXTENSION);
        exit(1);
    } else if (_wtype == LIQUID_WINDOW_KBD && _window_len % 2) {
        fprintf(stderr,"error: spgram%s_create(), KBD window length must be even\n", EXTENSION);
        exit(1);
    } else if (_delay == 0) {
        fprintf(stderr,"error: spgram%s_create(), delay must be greater than 0\n", EXTENSION);
        exit(1);
    }

    // allocate memory for main object
    SPGRAM() q = (SPGRAM()) malloc(sizeof(struct SPGRAM(_s)));

    // set input parameters
    q->nfft       = _nfft;
    q->wtype      = _wtype;
    q->window_len = _window_len;
    q->delay      = _delay;
    q->frequency  =  0;
    q->sample_rate= -1;

    // set object for full accumulation
    SPGRAM(_set_alpha)(q, -1.0f);

    // create FFT arrays, object
    q->buf_time = (TC*) malloc((q->nfft)*sizeof(TC));
    q->buf_freq = (TC*) malloc((q->nfft)*sizeof(TC));
    q->psd      = (T *) malloc((q->nfft)*sizeof(T ));
    q->fft      = FFT_CREATE_PLAN(q->nfft, q->buf_time, q->buf_freq, FFT_DIR_FORWARD, FFT_METHOD);

    // create buffer
    q->buffer = WINDOW(_create)(q->window_len);

    // create window
    q->w = (T*) malloc((q->window_len)*sizeof(T));
    unsigned int i;
    unsigned int n = q->window_len;
    float beta = 10.0f;
    float zeta =  3.0f;
    for (i=0; i<n; i++) {
        switch (q->wtype) {
        case LIQUID_WINDOW_HAMMING:         q->w[i] = hamming(i,n);         break;
        case LIQUID_WINDOW_HANN:            q->w[i] = hann(i,n);            break;
        case LIQUID_WINDOW_BLACKMANHARRIS:  q->w[i] = blackmanharris(i,n);  break;
        case LIQUID_WINDOW_BLACKMANHARRIS7: q->w[i] = blackmanharris7(i,n); break;
        case LIQUID_WINDOW_KAISER:          q->w[i] = kaiser(i,n,beta,0);   break;
        case LIQUID_WINDOW_FLATTOP:         q->w[i] = flattop(i,n);         break;
        case LIQUID_WINDOW_TRIANGULAR:      q->w[i] = triangular(i,n,n);    break;
        case LIQUID_WINDOW_RCOSTAPER:       q->w[i] = liquid_rcostaper_windowf(i,n/3,n); break;
        case LIQUID_WINDOW_KBD:             q->w[i] = liquid_kbd(i,n,zeta); break;
        default:
            fprintf(stderr,"error: spgram%s_create(), invalid window\n", EXTENSION);
            exit(1);
        }
    }

    // scale by window magnitude, FFT size
    float g = 0.0f;
    for (i=0; i<q->window_len; i++)
        g += q->w[i] * q->w[i];
    g = M_SQRT2 / ( sqrtf(g / q->window_len) * sqrtf((float)(q->nfft)) );

    // scale window and copy
    for (i=0; i<q->window_len; i++)
        q->w[i] = g * q->w[i];

    // reset the spgram object
    q->num_samples_total    = 0;
    q->num_transforms_total = 0;
    SPGRAM(_reset)(q);

    // return new object
    return q;
}