#version 450
layout(local_size_x = 256) in;
layout(set = 0, binding = 0) readonly buffer Input { float x[]; };
layout(set = 0, binding = 1) writeonly buffer Output { float result[]; };
layout(push_constant) uniform Params {
int n;
};
void main() {
uint idx = gl_GlobalInvocationID.x;
if (idx < n) {
float val = x[idx];
result[idx] = val / (1.0 + exp(-val));
}
}