with Rationals, Flts;
use Rationals, Flts;

pragma Elaborate_All (Rationals,Flts);

generic

  type Scalar is private;

  with procedure Mult(R: in Flt; S,Tmp: in out Scalar) is <>;
  with procedure Div(R: in Flt; S,Tmp: in out Scalar) is <>;
  with procedure Exp(S1: in Scalar; S2: in out Scalar) is <>;
  with procedure Log(S1: in Scalar; S2: in out Scalar) is <>;
  with procedure Root(K: in Positive; S1: in Scalar; S2: in out Scalar) is <>;
  with procedure IPower(I: in Integer; S1: in Scalar; S2: in out Scalar) is <>;

package QPowers is

  procedure QPower(Q: in Rational; S1: in Scalar; S2: in out Scalar); -- S2 = S1**Q

end QPowers;
