Fixed MORE bugs

This commit is contained in:
Luke I. Wilson
2023-05-24 15:58:59 -05:00
parent 46fd55ab8d
commit b5434fb5de
10 changed files with 205 additions and 55 deletions

View File

@@ -82,6 +82,17 @@ func (s *IndexedSeries[I]) Add(other *IndexedSeries[I]) *IndexedSeries[I] {
return s
}
func (s *IndexedSeries[I]) AddFloat(num float64) *IndexedSeries[I] {
for index, row := range s.index {
newValue, err := anymath.Add(s.series.Value(row), num)
if err != nil {
panic(fmt.Errorf("error adding values at index %v: %w", index, err))
}
s.series.SetValue(row, newValue)
}
return s
}
// Copy returns a copy of this series.
func (s *IndexedSeries[I]) Copy() *IndexedSeries[I] {
return s.CopyRange(0, -1)
@@ -124,6 +135,17 @@ func (s *IndexedSeries[I]) Div(other *IndexedSeries[I]) *IndexedSeries[I] {
return s
}
func (s *IndexedSeries[I]) DivFloat(num float64) *IndexedSeries[I] {
for index, row := range s.index {
newValue, err := anymath.Divide(s.series.Value(row), num)
if err != nil {
panic(fmt.Errorf("error dividing values at index %v: %w", index, err))
}
s.series.SetValue(row, newValue)
}
return s
}
func (s *IndexedSeries[I]) Filter(f func(i int, val any) bool) *IndexedSeries[I] {
_ = s.series.Filter(f)
return s
@@ -202,6 +224,17 @@ func (s *IndexedSeries[I]) Mul(other *IndexedSeries[I]) *IndexedSeries[I] {
return s
}
func (s *IndexedSeries[I]) MulFloat(num float64) *IndexedSeries[I] {
for index, row := range s.index {
newValue, err := anymath.Multiply(s.series.Value(row), num)
if err != nil {
panic(fmt.Errorf("error multiplying values at index %v: %w", index, err))
}
s.series.SetValue(row, newValue)
}
return s
}
// Name returns the name of the series.
func (s *IndexedSeries[I]) Name() string {
return s.series.Name()
@@ -374,6 +407,17 @@ func (s *IndexedSeries[I]) Sub(other *IndexedSeries[I]) *IndexedSeries[I] {
return s
}
func (s *IndexedSeries[I]) SubFloat(num float64) *IndexedSeries[I] {
for index, row := range s.index {
newValue, err := anymath.Subtract(s.series.Value(row), num)
if err != nil {
panic(fmt.Errorf("error subtracting values at index %v: %w", index, err))
}
s.series.SetValue(row, newValue)
}
return s
}
// Value returns the value at the given row.
func (s *IndexedSeries[I]) Value(i int) any {
return s.series.Value(i)