static void ann_predict_meanstd(uint16_t *pixels, float mean, float std) { int i, j; float ah[6]; float x, x_val, y_val; for (i = 0; i < num_hidden; i++) { ah[i] = BH(i); } uint16_t subsample; for (i = 0; i < num_subsample; i++) { subsample = pixels[i]; x = (float)(subsample - mean) / std; for (j = 0; j < num_hidden; j++) { float wih_tmp = WIH(i, j); ah[j] += x * wih_tmp; } } x_val = BO(0); y_val = BO(1); for (i = 0; i < num_hidden; i++) { x_val += WHO(i, 0) * tanh_approx(ah[i]); y_val += WHO(i, 1) * tanh_approx(ah[i]); } // pred = global for storing prediction values pred[PRED_X] = (unsigned short)((x_val * 112) + 0.5); pred[PRED_Y] = (unsigned short)((y_val * 111) + 0.5); return; }
/////////////////////////////////////////////////////////////////// // CLOSEST IN /////////////////////////////////////////////////////////////////// Vec3f ClosestIn(Simplex& P){ assert(P.GetSize() > 0); if(P.GetSize() == 1) return P.at(0); else if(P.GetSize() == 2){ //We have a line. Vector3f AO(-P.at(1)[0], -P.at(1)[1], -P.at(1)[2]); Vector3f AB(P.at(0)[0] - P.at(1)[0], P.at(0)[1] - P.at(1)[1], P.at(0)[2] - P.at(1)[2]); Vector3f BO(-P.at(0)[0], -P.at(0)[1], -P.at(0)[2]); float v = (AB.dot(AO))/(AB.dot(AO) + (-AB).dot(BO)); return (P.at(1)*(1-v) + (P.at(0))*v); }else{//We have a triangle Vector3f A(P.at(2)[0], P.at(2)[1], P.at(2)[2]); Vector3f B(P.at(1)[0], P.at(1)[1], P.at(1)[2]); Vector3f C (P.at(0)[0], P.at(0)[1], P.at(0)[2]); Vector3f AB = B-A; Vector3f AC = C-A; Vector3f N = AB.cross(AC); Vector3f Nab = N.cross(AB); Vector3f Nac = N.cross(AC); float v = (-A).dot(Nac)/((AB).dot(Nac)); float w = (-A).dot(Nab)/((AC).dot(Nab)); float u = 1-v-w; return (P.at(2)*u + P.at(1)*v + P.at(0)*w); } }
void test_oid_and_interpolation() { char *oid_s = "010203040506070809101112"; bcon oid_bc[] = { "_id", BO(""), "user_id", BO("010203040506070809101112"), "admin_id", BPO(&oid_s), BEND }; if ( verbose ) { putchar('\t'); bcon_print( oid_bc ); putchar('\n'); } test_bson_from_bcon( oid_bc, BCON_OK, BSON_VALID );; }