Пример #1
0
int main( int argc, char**argv){
	if(2 != argc){
		printf("Nombre de paramètres insuffisants\n");
		return 1;
	}

	
	int number = atoi( argv[1] );	
	int i, length = get_count( number), x, y;
	for( i = 0; i < length/2; i++) {
		x = get_at_index( number, i, length );
		y = get_at_index( number, length-i-1, length );
		//printf("x=>%d   y=>%d", x,y);
		if( x != y ){
			printf("0 \n");
			return 0;
		}
	}
	printf("1 \n");

	return 0;
}
Пример #2
0
        Matrix & Matrix::diagonalize(int rotations_count, /*out*/ Matrix & transformation, Real precision /*=DEFAULT_REAL_PRECISION*/)
        {
            static const size_t OFF_DIAGONAL_ITEMS_COUNT = VECTOR_SIZE*(VECTOR_SIZE - 1)/2;
            static const int off_diagonal_items[OFF_DIAGONAL_ITEMS_COUNT] = { element_index(0,1), element_index(0,2), element_index(1, 2) };

            transformation = Matrix::IDENTITY;
            for (int iter = 0; iter < rotations_count; ++iter)
            {
                Real max = -1;
                for (int i = 0; i < OFF_DIAGONAL_ITEMS_COUNT; ++i)
                {
                    Real a = fabs(get_at_index(off_diagonal_items[i]));
                    if (max < 0 || a > max) { max = a; }
                }
                if (less_or_equal(max, 0, precision))
                {
                    return *this;
                }
                do_jacobi_rotation((iter + 1) % VECTOR_SIZE, (iter + 2) % VECTOR_SIZE, transformation);
            }
            return *this;
        }