コード例 #1
0
ファイル: keccak.c プロジェクト: battyc/pycryptodome
EXPORT_SYM int keccak_absorb (keccak_state *self,
                              const uint8_t *in,
                              size_t length)
{
    if (NULL==self || NULL==in)
        return ERR_NULL;
    
    if (self->squeezing)
        return ERR_UNKNOWN;
    
    while (length > 0) {
        unsigned bytestocopy;
        
        bytestocopy = minAB(length, self->rate - self->valid_bytes);
        memcpy(self->buf + self->valid_bytes, in, bytestocopy);
      
        self->valid_bytes += bytestocopy;
        in                += bytestocopy;  
        length            -= bytestocopy;

        if (self->valid_bytes == self->rate) {
            keccak_absorb_internal (self);
            keccak_function (self->state);
            self->valid_bytes = 0;
        }
    }

    return 0;
}
コード例 #2
0
bool	CollisionDroiteCercle_BBox(const t_vec2f& A, const t_vec2f&  B, const t_vec2f& C, float radius)
{
	t_vec2f minAB(std::min(A.x, B.x), std::min(A.y, B.y));
	t_vec2f maxAB(std::max(A.x, B.x), std::max(A.y, B.y));
	t_vec2f minC(C.x - radius, C.y - radius);
	t_vec2f maxC(C.x + radius, C.y + radius);

	return !(maxAB.x < minC.x ||
			 minAB.x > maxC.x ||
			 maxAB.y < minC.y ||
			 minAB.y > maxC.y);
}
コード例 #3
0
bool CollisionDroiteSeg_BBox(const t_vec2f& A, const t_vec2f& B, const t_vec2f& O, const t_vec2f& P)
{
	t_vec2f minAB(std::min(A.x, B.x), std::min(A.y, B.y));
	t_vec2f minOP(std::min(O.x, P.x), std::min(O.y, P.y));
	t_vec2f maxAB(std::max(A.x, B.x), std::max(A.y, B.y));
	t_vec2f maxOP(std::max(O.x, P.x), std::max(O.y, P.y));

	return !(maxAB.x < minOP.x ||
			 minAB.x > maxOP.x ||
			 maxAB.y < minOP.y ||
			 minAB.y > maxOP.y);
}
コード例 #4
0
ファイル: test.c プロジェクト: hippunk/ProjCOMPLEX
void minAB_test(){
    printf("\nTest de la fonction minAB\n");
    printf("Le résultat correspond à la tache la plus courte sur les machines A et B\n");
    instance_t * inst = instanceCreer(10,"Pouet");
    
    instanceRandNC(inst);
    instanceAfficher(inst);
    int i,j;
    int m=minAB(inst,&i,&j);
    printf("\nValeur = %d, Tache n° = %d, Machine = %c\n\n",m,i,'A'+j);

    
    instanceDetruire(inst);
}
コード例 #5
0
ファイル: test.c プロジェクト: hippunk/ProjCOMPLEX
void minAB_test_distribNC(int loop,void (*pInstRand)(instance_t * inst)){
    printf("\nTest de la distribution de proba du résultat minAB\n");
    printf("Le résultat correspond à la distribution de proba du résultat de minAB\n");
    instance_t * inst = instanceCreer(10,"Test distrib");
    float cpt1 = 0;
    float cpt2 = 0;
    int i = 0,j = 0;
    for(int cpt = 0;cpt<loop;cpt++){
        pInstRand(inst);
        
        minAB(inst,&i,&j);
        if(j == 0)
            cpt1++;
        else
            cpt2++;
        //printf("Tour %i\n",cpt);
    }

    printf("\nMinimum machine A = %.3f, Minimum machine B = %.3f\n\n",cpt1/loop,cpt2/loop);
    instanceDetruire(inst);
}