1
0

scalar.go 935 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package ops
  2. import "makarna/pkg/backend/cpu"
  3. // Scale multiplies all elements by a scalar (in-place)
  4. func Scale(t *cpu.Tensor, s float32) {
  5. data := t.DataFloat32()
  6. for i := range data {
  7. data[i] *= s
  8. }
  9. }
  10. // AddScalar adds a scalar to all elements (in-place)
  11. func AddScalar(t *cpu.Tensor, s float32) {
  12. data := t.DataFloat32()
  13. for i := range data {
  14. data[i] += s
  15. }
  16. }
  17. // Clamp clamps all values to [min, max] (in-place)
  18. func Clamp(t *cpu.Tensor, min, max float32) {
  19. data := t.DataFloat32()
  20. for i := range data {
  21. if data[i] < min {
  22. data[i] = min
  23. } else if data[i] > max {
  24. data[i] = max
  25. }
  26. }
  27. }
  28. // Neg negates all elements (in-place)
  29. func Neg(t *cpu.Tensor) {
  30. data := t.DataFloat32()
  31. for i := range data {
  32. data[i] = -data[i]
  33. }
  34. }
  35. // Abs takes absolute value of all elements (in-place)
  36. func Abs(t *cpu.Tensor) {
  37. data := t.DataFloat32()
  38. for i := range data {
  39. if data[i] < 0 {
  40. data[i] = -data[i]
  41. }
  42. }
  43. }