Esempio n. 1
0
int crypto_hashblocks_sha512(
    unsigned char *statebytes,
    const unsigned char *in,crypto_uint16 inlen
    )
{
  myu64 state[8];
  myu64 state_safe[8];  
  myu64 w[16];
  unsigned char i;

  myu64_convert_bigendian(state[0].v, statebytes + 0, 8);
  for (i=0;i<8;i++)
    state_safe[i] = state[i];
	
  while (inlen >= 128) 
  {
    for(i=0;i<16;i++)
      myu64_convert_bigendian(w[i].v, in + 8*i, 1);
	 
    for(i=0;i<16;i++)
      myF(state, w+i, i);

    expand(w);

    for(i=0;i<16;i++)
      myF(state, w+i, i+16);

    expand(w);

    for(i=0;i<16;i++)
      myF(state, w+i, i+32);

    expand(w);

    for(i=0;i<16;i++)
      myF(state, w+i, i+48);

    expand(w);

    for(i=0;i<16;i++)
      myF(state, w+i, i+64);
	
    for(i=0;i<8;i++)
      bigint_add64(state[i].v, state[i].v, state_safe[i].v);  

    for(i=0;i<8;i++)
      state_safe[i] = state[i];

    in += 128;
    inlen -= 128;
  }
 
  myu64_convert_bigendian(statebytes+0, state_safe[0].v, 8);

  return inlen;
}
Esempio n. 2
0
File: qlv2.cpp Progetto: chagge/AI
void QL::learnWts() {
	resetInputToCNN();
	for(int i = 0; i < miniBatchSize; ++i) {
		setInputToCNN(dExp[miniBatch[i]].fiJN, i);
	}
	if(numTimeLearnt < 1) {
		std::ofstream myF("inputToCNN.txt");
		printInfile(cnnInputSize, inputToCNN, myF);
		myF.close();
	}

	float *qVals = caff2->forwardNGetQVal(inputToCNN);

	TargetLayerInputData targ;
	std::fill(targ.begin(), targ.end(), 0.0f);
	FilterLayerInputData filterInp;
	std::fill(filterInp.begin(), filterInp.end(), 0.0f);
	prepareTarget(targ, qVals);

	for(int i = 0; i < miniBatchSize; ++i) {
		filterInp[i*numAction + dExp[miniBatch[i]].act] = 1;
	}

	resetInputToCNN();
	for(int i = 0; i < miniBatchSize; ++i) {
		setInputToCNN(dExp[miniBatch[i]].fiJ, i);
	}

	int maxLIter = info.numLearnSteps;
	caff->learn(inputToCNN, targ, filterInp, maxLIter);

	numTimeLearnt++;
	if(numTimeLearnt - targetUpdate >= info.targetUpdateFreq) {
		targetUpdate = numTimeLearnt;
		caff2 = caff;
	}
}