You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

58 lines
1.9 KiB

25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
  1. // General vectors of rational numbers.
  2. #ifndef _CL_GV_RATIONAL_H
  3. #define _CL_GV_RATIONAL_H
  4. #include "cln/number.h"
  5. #include "cln/GV_real.h"
  6. #include "cln/rational_class.h"
  7. #include "cln/io.h"
  8. namespace cln {
  9. // A vector of rational numbers is just a normal vector of real numbers.
  10. typedef cl_heap_GV<cl_RA> cl_heap_GV_RA;
  11. struct cl_GV_RA : public cl_GV<cl_RA,cl_GV_R> {
  12. public:
  13. // Constructors.
  14. cl_GV_RA ();
  15. cl_GV_RA (const cl_GV_RA&);
  16. explicit cl_GV_RA (std::size_t len);
  17. // Assignment operators.
  18. cl_GV_RA& operator= (const cl_GV_RA&);
  19. // Private pointer manipulations.
  20. cl_GV_RA (cl_heap_GV_RA* p) : cl_GV<cl_RA,cl_GV_R> (p) {}
  21. cl_GV_RA (cl_private_thing p) : cl_GV<cl_RA,cl_GV_R> (p) {}
  22. };
  23. inline cl_GV_RA::cl_GV_RA (const cl_GV_RA& x) : cl_GV<cl_RA,cl_GV_R> (as_cl_private_thing(x)) {}
  24. CL_DEFINE_ASSIGNMENT_OPERATOR(cl_GV_RA,cl_GV_RA)
  25. inline cl_GV_RA::cl_GV_RA (std::size_t len)
  26. : cl_GV<cl_RA,cl_GV_R> ((cl_heap_GV_RA*) cl_make_heap_GV_number(len)) {}
  27. inline cl_GV_RA::cl_GV_RA ()
  28. : cl_GV<cl_RA,cl_GV_R> ((cl_heap_GV_RA*) (cl_heap_GV_number*) cl_null_GV_number) {}
  29. // Copy a vector.
  30. inline const cl_GV_RA copy (const cl_GV_RA& vector)
  31. {
  32. return The(cl_GV_RA) (copy((const cl_GV_R&) vector));
  33. }
  34. // Output.
  35. inline void fprint (std::ostream& stream, const cl_GV_RA& x)
  36. {
  37. extern cl_print_flags default_print_flags;
  38. extern void print_vector (std::ostream& stream, const cl_print_flags& flags, void (* fun) (std::ostream&, const cl_print_flags&, const cl_number&), const cl_GV_number& vector);
  39. extern void print_rational (std::ostream& stream, const cl_print_flags& flags, const cl_RA& z);
  40. print_vector(stream, default_print_flags,
  41. (void (*) (std::ostream&, const cl_print_flags&, const cl_number&))
  42. (void (*) (std::ostream&, const cl_print_flags&, const cl_RA&))
  43. &print_rational,
  44. x);
  45. }
  46. CL_DEFINE_PRINT_OPERATOR(cl_GV_RA)
  47. } // namespace cln
  48. #endif /* _CL_GV_RAATIONAL_H */