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; }
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); }
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); }
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); }
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); }