matrix.h 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. /**
  2. * Copyright (c) 2016-present, Facebook, Inc.
  3. * All rights reserved.
  4. *
  5. * This source code is licensed under the MIT license found in the
  6. * LICENSE file in the root directory of this source tree.
  7. */
  8. #pragma once
  9. #include <cstdint>
  10. #include <istream>
  11. #include <ostream>
  12. #include <vector>
  13. #include <assert.h>
  14. #include "real.h"
  15. namespace fasttext {
  16. class Vector;
  17. class Matrix {
  18. protected:
  19. int64_t m_;
  20. int64_t n_;
  21. public:
  22. Matrix();
  23. explicit Matrix(int64_t, int64_t);
  24. virtual ~Matrix() = default;
  25. int64_t size(int64_t dim) const;
  26. virtual real dotRow(const Vector&, int64_t) const = 0;
  27. virtual void addVectorToRow(const Vector&, int64_t, real) = 0;
  28. virtual void addRowToVector(Vector& x, int32_t i) const = 0;
  29. virtual void addRowToVector(Vector& x, int32_t i, real a) const = 0;
  30. virtual void averageRowsToVector(Vector& x, const std::vector<int32_t>& rows) const = 0;
  31. virtual void save(std::ostream&) const = 0;
  32. virtual void load(std::istream&) = 0;
  33. virtual void dump(std::ostream&) const = 0;
  34. };
  35. } // namespace fasttext