package ops import "makarna/pkg/backend/cpu" // Scale multiplies all elements by a scalar (in-place) func Scale(t *cpu.Tensor, s float32) { data := t.DataFloat32() for i := range data { data[i] *= s } } // AddScalar adds a scalar to all elements (in-place) func AddScalar(t *cpu.Tensor, s float32) { data := t.DataFloat32() for i := range data { data[i] += s } } // Clamp clamps all values to [min, max] (in-place) func Clamp(t *cpu.Tensor, min, max float32) { data := t.DataFloat32() for i := range data { if data[i] < min { data[i] = min } else if data[i] > max { data[i] = max } } } // Neg negates all elements (in-place) func Neg(t *cpu.Tensor) { data := t.DataFloat32() for i := range data { data[i] = -data[i] } } // Abs takes absolute value of all elements (in-place) func Abs(t *cpu.Tensor) { data := t.DataFloat32() for i := range data { if data[i] < 0 { data[i] = -data[i] } } }