How to determine the reasonable lowerBound and upperBound in EvalChebyshevSeries()?

  1. Is it simply determined based on the maximum and minimum values in the input vector?
  2. If it involves calculations such as encoding two different vectors, performing addition, subtraction, and multiplication after encryption, and then inputting the results into EvalChebyshevSeries(), are the lowerBound and upperBound corresponding one-to-one with the plaintext calculation results of the input vectors at this time?
    like:
input1 = {1,2,3,4,5,6};
input2 = {7,8,9,10,11};
c1 = EncodeAndEncrypt(input1);
c2 = EncodeAndEncrypt(input2);
c3 = c1 + c2  -> EvalChebyshevSeries(c3,coeff,8,17)
c3 = c1 - c2   -> EvalChebyshevSeries(c3,coeff,-10,5)
  1. Can lowerBound and upperBound be set larger, for example, directly taking the maximum and minimum values of double?

The interval for the Chebyshev series evaluation should be the interval of the values to be evaluated. So your first two points are correct, as long as by “input vector” you mean the input to EvalChebyshevSeries().

Many times you can’t know precisely the interval; in those cases, it is better to take a more conservative interval of the expected values, since any value that falls outside the interval will return incorrect results. At the same time, a larger interval leads to more computation complexity. In particular, a larger input interval requires a larger degree of the polynomial approximation in order to have reasonable interpolation error. Depending on the function you want to approximate and whether it supports this, a good practice is to scale down your input by a constant before evaluating the Chebyshev series in order to reduce the degree, and then scale the output back up accordingly. Taking the minimum and maximum values of double is not possible, since the associated degree would likely be larger than a billion.

1 Like